2015-05-12 39 views
0

據我所知,如果我的onTouch方法返回false,在最初的ACTION_DOWN情況下它不會開始跟蹤移動,並且如果我返回true,它會。但是我有一些情況,當我需要停止從某個時刻跟蹤移動。我如何實現這一目標?當我的情況持續時,我試圖返回假,但它繼續遇到這種情況。如何取消或停止運動事件?如何在android中完成跟蹤ACTION_MOVE?

這裏是我用於我的拖放應用程序的代碼,當X小於100時,我只想停止拖動。我怎樣才能做到這一點?

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

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       imageTouchX = (int) event.getRawX() - (int) img.getX(); 
       imageTouchY = (int) event.getRawY() - (int) img.getY(); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       int x_cord = (int) event.getRawX(); 
       int y_cord = (int) event.getRawY(); 

       img.setX(x_cord - imageTouchX); 
       img.setY(y_cord - imageTouchY); 

       if(img.getX() < 100){ 
        return false; 
       } 
       break; 
      default: 
       break; 
     } 
     return true; 
    } 

在此先感謝。

+0

一個更清晰的方法是消費事件,但不作任何改變,即如果(x_cord - imageTouchX <100){img.setX(x_cord - imageTouchX); img.setY(y_cord - imageTouchY); } – humblerookie

+0

是的,但我仍然可以繼續拖動,當條件不成立...我想更好的辦法是從物體上移除ontouch監聽器,就像Ben Levi說的那樣,但是這仍然會帶來一些問題,因爲我想停止拖動,但是當我再次觸摸圖像時,我想要通過action_down完成一些動作... – Carmine

回答

0

如果img在x的位置100下返回,該怎麼辦?要做到這一點的一種方法是一起禁用touchevent,但那麼你將如何獲得下一個touchevent?除非它將成爲接受觸摸事件的另一個視圖,無論如何,如果您停止觸摸事件,您將不會再次收到任何觸摸事件,並且如果這是您希望獲得的,只需禁用該視圖的觸摸事件,您可以在選擇時再次啓用它,祝您好運! :)