2012-06-29 18 views
7

ユーザーが特定のビューを移動しなくなったときにアプリケーションで検出する必要があります。私は、ユーザーがビューに触れて、それを横切って動いている間に相互作用することができる、アプリケーション内のマーキー・テキストに似たものを作成しています。ユーザーが指を持ち上げた後、ビューをスクロールし始める必要があります。数秒で私の指を動かすと、指を持ち上げると、MotionEvent.ACTION_UPは呼び出されません。最後のイベントはACTION_MOVEです。では、ユーザーが数秒間ビューを移動した後に指を持ち上げたときに、どうすれば検出できますか?それを検出できる何らかの機能はありますか?事前にMotionEvent.ACTION_MOVEが終了したときの検出方法

txt.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, final MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       Log.e("","event down : "+event.getAction()); 
       handler.removeCallbacks(runnable); 
       break; 
      case MotionEvent.ACTION_UP: 
       Log.e("","event up : "+event.getAction()); 
       if(myTimer!=null){ 
        myTimer.cancel(); 
       } 
       break; 
      case MotionEvent.ACTION_MOVE: 
       Log.d("","move"); 
       // handler.removeCallbacks(runnable); 
       checkX(); 
       break; 
     } 
     return true; 
    } 
}); 

ありがとう:

はここで私が使用しているコードです!

+0

あなたのコードを表示してください。したがって、 – rajpara

+0

サンプルコードが追加されました。 –

+0

私はマルチタッチで同じ問題を抱えています。最初の指がMotionEvent.ACTION_MOVEを送り、その後MotionEvent.ACTION_POINTER_UPを送りました。それは愚かな何か... –

答えて

2

ジェスチャーが完了する前に、イベントがACTION_CANCELアクションを送信している可能性があります。または、チェックしているビューの外にドラッグすると、ACTION_OUTSIDEになる可能性があります。

これは、中Log.d()文を入れMotionEvent.getActionMasked()値を印刷し、そしてあなたのACTION_MOVEイベントが終了した後にアクションが呼び出されているかどうかをチェックすることです/デバッグを確認するための最良の方法。

関連する問題