我希望能检测用户在触摸屏幕时手指移动的方向。目前已经可以检测三个方向,但"上"方向的移动没有被调用。
以下是我的代码:
以下是我的代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
// store the X value when the user's finger was pressed down
downXValue = event.getX();
downYValue = event.getY();
break;
}
case MotionEvent.ACTION_UP: {
// Get the X value when the user released his/her finger
float currentX = event.getX();
float currentY = event.getY();
//check if horizontal or vertical movement was bigger
if (Math.abs(downXValue - currentX) > Math.abs(downYValue)
- currentY) {
Log.e("motionevent", "x");
// going backwards: pushing stuff to the right
if (downXValue < currentX) {
Log.e("motionevent", "right");
}
// going forwards: pushing stuff to the left
if (downXValue > currentX) {
Log.e("motionevent", "left");
}
} else {
Log.e("motionevent", "y");
if (downYValue < currentY) {
Log.e("motionevent", "up");
}
if (downYValue > currentY) {
Log.e("motionevent", "down");
}
}
break;
}
}
return true;
}
检测水平或垂直移动时是否存在问题?因为每当我向上移动时,右侧或左侧会被调用。向下运动正常。
if (Math.abs(downXValue - currentX) > Math.abs(downYValue)-currentY)
中有一个括号位置错误,并且下上混淆了,谢谢! - Yalla T.