【发布时间】:2014-08-18 07:33:13
【问题描述】:
我正在使用 Android SurfaceView 并监听多点触控事件。我能够检测到多次触摸,但似乎ACTION_POINTER_UP 触摸事件没有被触发。这是我的代码的快速片段。
public class GameView extends SurfaceView implements Runnable {
...
@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
Log.i("pointer count", Integer.toString(motionEvent.getPointerCount()));
return true;
}
...
}
当我将两根手指放在屏幕上时,指针计数注销为 2。如果我移开一根手指,指针计数注销不是 1,而是保持在 2。如果我移动手指,它只会变为 1还在屏幕上。为什么会这样,我该如何解决?谢谢!
编辑
这个问题出现在我的一加一和我的朋友三星 Galaxy Note 2 上。有趣的是,当我把它放在我的三星 Galaxy s4 上时,并没有出现这个问题。
【问题讨论】:
-
只有在非主指针上升时才会发生这种情况。
-
@SimonMarquis 如果这是一个问题。是的!
-
不,不是。但是如果你正确地接收到 MOVE 事件,你肯定做错了什么。一点点代码可能有助于发现错误
-
在您的日志语句中添加正在发生的操作,也许这会对您有所帮助 (
actionToString(action))。getActionIndex还会告诉您该操作针对哪个指针。 developer.android.com/reference/android/view/MotionEvent.html -
谢谢@Arve 我已经这样做了,它会注销
ACTION_POINTER_UP(1),尽管如果我在使用action == MotionEvent.ACTION_POINTER_UP之后进行日志记录,它会返回false。为什么?
标签: android surfaceview multi-touch