2012-07-23 20 views
1

是否可以使用onTouchEvent來測量某人在屏幕上拖動手指的距離?任何想法,將不勝感激。衡量您在Android中使用onTouchEvent拖動多遠?

+0

您可以使用'MotionEvent.getX()'獲取事件的位置並將pos保存爲兩個不同的變量;一個'previous_pos'和'current_pos',然後計算差異。檢查[這裏](http://developer.android.com/reference/android/view/MotionEvent.html#getX(int))。當第一個MotionEvent發生時,將初始位置設置爲previous_pos,然後下一個將是current_pos。每個MotionEvent完成後,將previous_pos設置爲current_pos。 – adchilds 2012-07-23 01:12:53

回答

8

您可以使用ACTION_DOWNACTION_UP來存儲手指觸摸的起點和終點,並計算拖動的距離。

例如:

Point p1; 
Point p2; 

View view = new View(this); 

view.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_DOWN) 
      p1 = new Point((int) event.getX(), (int) event.getY()); 
     else if(event.getAction() == MotionEvent.ACTION_UP) 
      p2 = new Point((int) event.getX(), (int) event.getY()); 

     return false; 
     } 
}); 

和距離等於Math.sqrt(Math.pow(p1.x-p2.x, 2) + Math.pow(p1.y-p2.y, 2))。而且,如果要計算隨時拖動的距離,則可以存儲第二個位置if(event.getAction() == MotionEvent.ACTION_MOVE)

+0

正是我需要的,謝謝! – 2012-07-23 01:57:39

+0

享受它。請投我:) – 2012-07-23 10:26:24

+0

@HosseinMobasher謝謝, – 2015-12-21 17:43:13