如何在android手机中捕捉手指的移动方向?

我想捕获Android触摸手机上的手指移动方向。 如果用户向上/向下/向左/向右滑动他的手指,我想捕捉这个方向。 我怎样才能find这个? 谢谢。

Solutions Collecting From Web of "如何在android手机中捕捉手指的移动方向?"

实现onTouchEvent(),并通过用户按下并抬起的位置来计算dx和dy。 您可以使用这些值来确定移动的方向。

float x1, x2, y1, y2, dx, dy; String direction; switch(event.getAction()) { case(MotionEvent.ACTION_DOWN): x1 = event.getX(); y1 = event.getY(); break; case(MotionEvent.ACTION_UP): { x2 = event.getX(); y2 = event.getY(); dx = x2-x1; dy = y2-y1; // Use dx and dy to determine the direction of the move if(Math.abs(dx) > Math.abs(dy)) { if(dx>0) direction = "right"; else direction = "left"; } else { if(dy>0) direction = "down"; else direction = "up"; } } } 

你最好的办法是处理你从View.OnTouchListener()callback中获得的MotionEvent。 动作事件会跟踪您当前如何通过其操作属性与View进行交互。

我想通过检查MotionEvent的动作属性和动作事件发生的x / y值,可以计算出某人滑动手指的方向。

 switch (event.getAction()) { case MotionEvent.ACTION_DOWN: oldX= event.getX(); oldY= event.getY(); break; case MotionEvent.ACTION_MOVE: int newX = motionEvent.getX(); int newY = motionEvent.getY(); int deltaX = oldX - newX; int deltaY = oldY - newY; if(Math.abs(deltaY)>Math.abs(deltaX)) //Motion in Y direction. else // Motion in X direction. break; } 

MotionEvent对象上还有许多其他方法可供使用: http : //developer.android.com/reference/android/view/MotionEvent.html