2016-04-05 20 views
1

私はアプリを作ろうとしており、このことは私の脳を壊しています。私が持っている12のImageViewのうち1つを選択する必要があります。それが正しいが、ユーザーが3秒未満しか触れない場合は、通常のメッセージが表示されます。しかし、3秒以上タッチすると、新しいメッセージが表示されます。onTouch and onClick

問題は、ユーザーがクリックしたImageViewのタグを取得するためにonClickListenerを持っていることと、正しいものと比較することです。正しい場合は、次の作業も行う必要があります。 ユーザーは3秒以上触れていますか?はいの場合は別のメッセージを表示しない場合はメッセージを表示します。

@Override 
    public void onClick(View v) { 
     if(v.getId()==R.id.btLogOut){ //this one is to see if the user clicked the logout Button 
      DBH.deletePerson(); 
      finish(); 
      startActivity(new Intent(Fake.this, MainActivity.class)); 
      finish(); 
     } 

     if(v.getTag().equals("the one who waits for the on touch")){ 
     ImageView x = (ImageView)findViewById(v.getId()); 
     x.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         lastDown = System.currentTimeMillis(); 
         break; 
        case MotionEvent.ACTION_UP: 
         lastDuration = System.currentTimeMillis() - lastDown; 
         cambio(lastDuration); 
         break; 
       } 
       return false; 
      } 


      public void cambio(long ld){ //check time it has been touched 
        if (ld > 3000) { 
         Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_SHORT).show(); 
         lastDuration = 0; 

        } 

        if (ld < 1000) { 
         lastDuration = 0; 
         Toast.makeText(getApplicationContext(), "NO", Toast.LENGTH_SHORT).show(); 
        } 
       } 

       }); 

私がいる主な問題は次のとおりです。私はそれが唯一のonClickで、onTouchに入っていない正しいImageViewのに初めて触れたとき。 あなたはこれを実装するための良いアイデアを知っていますか?

大変ありがとうございます!

ACTION_UPイベント
  • すぎACTION_CANCELイベントを処理し、ACTION_UPとしてそれを扱うために通知を得るためにACTION_DOWNイベントで
  • +0

    'onLongClickListener'を試してみてください –

    答えて

    1
    1. return true
    2. ACTION_DOWNACTION_UPの間の時間間隔をカウントし、x秒より長いタッチを無視することができます。
    +0

    おかげさまで、私はonClickリスナーが必要なのは、ユーザーが別のボタン/ Imageviewをクリックするとメッセージ/アクションが行われるためです。だから私はクリックを聞くために私のアプリケーションが必要ですが、ユーザーが同じImageViewをクリックしたとき、私はこのImageViewがダウンしている時間を聴きたいと思います。 –

    +0

    これは問題ありません。あなたは正しいことをしています。 onTouchで真に戻り、上の他の2点に従います。 – arsent

    関連する問題