【发布时间】:2016-11-29 13:59:38
【问题描述】:
我需要在我的代码中检测滑动方向。我可以检测到方向,但就像我在右上或左上滑动一样。左边也一样,我的要求是如果我向左滑动它应该只向左滑动,我的要求是不抬起手指,同样的所有方向。谁能帮我吗。提前致谢!
@覆盖 public boolean onTouchEvent(MotionEvent touchevent) {
switch (touchevent.getAction()) {
// when the user first touches the screen we get x and y coordinate
case MotionEvent.ACTION_DOWN: {
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_MOVE: {
x2 = touchevent.getX();
y2 = touchevent.getY();
float deltaX = x2 - x1;
if (Math.abs(deltaX) > MIN_DISTANCE) {
// Left to Right swipe action
if (x2 > x1) {;
Log.e("RTL", "Right to Left Swap Performed");
}
else {
Log.e("LTR", "Left to Right Swap Performed");
}
} else {
if (y2 > y1) {
Log.e("UTD", "UP to Down Swap Performed");
}
// Right to left swipe action
else {
Log.e("DTU", "Down to UP Swap Performed");
}
}
}
}
return false;
}
【问题讨论】:
-
@cokceken move 正在工作..但我无法准确地左、右、上和下
-
我认为没有返回方向的函数。你应该做数学。计算移动向量,计算角度。如果您的矢量大于 X 并且您的角度介于 Z-Y 之间,则用户滑动方向 1。
-
@cokceken 我使用的上述编辑代码...我设置了 MIN_DISTANCE = 150
-
会推荐使用 Sensey 库 (github.com/nisrulz/sensey) 来做类似的事情。
标签: android