2012-06-29 121 views
7

當用戶停止移動特定視圖時,需要在我的應用程序中檢測到。我在我的應用程序中創建類似於marque文本的內容,可以在用戶觸摸視圖並移動它時進行交互。我需要在用戶舉起手指後開始滾動視圖。當我注意到我在幾秒鐘內將手指移過視圖,並且當我擡起手指時,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事件結束後,被稱爲什麼行動最好的辦法。