我想捕捉Android触控手机上的手指移动方向.如果用户向上/向下/向左/向右滑动手指,我想捕获此方向.我怎么能找到这个?谢谢.
cst*_*ack 45
实现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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
nic*_*ild 10
最好的办法是处理从View.OnTouchListener()回调中获得的MotionEvent.运动事件通过其action属性跟踪您当前与View的交互方式.
我想你可以通过检查MotionEvents的动作属性和动作事件发生位置的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;
}
Run Code Online (Sandbox Code Playgroud)
MotionEvent对象上还有许多其他方法可供使用:http: //developer.android.com/reference/android/view/MotionEvent.html
| 归档时间: |
|
| 查看次数: |
25710 次 |
| 最近记录: |