6
文档说这有关:Android的 - 如何处理两个手指触摸
手势与ACTION_DOWN运动事件提供 第一指针的位置下来开始。由于每个额外的指针 发生故障,框架将相应地生成一个动作事件,其中包括ACTION_POINTER_DOWN或ACTION_POINTER_UP。
,所以我必须做的onTouchEvent功能的覆盖在我的活动:
@Override
public boolean onTouchEvent(MotionEvent MEvent)
{
motionaction = MEvent.getAction();
if(motionaction == MotionEvent.ACTION_DOWN)
{
System.out.println("DEBUG MESSAGE POINTER1 " + MEvent.getActionIndex());
}
if(motionaction == MotionEvent.ACTION_POINTER_DOWN)
{
System.out.println("DEBUG MESSAGE POINTER2 " + MEvent.getActionIndex());
}
}
不幸的是,第二如果从来没有进入。该活动包含2 2视图与2 OnTouchListener,我知道onTouchEvent只有当活动的视图不消耗事件,所以我试图在侦听器中返回false,并以这种方式我只能识别第一手指触摸,但这样可以避免收听者收到ACTION_UP事件,并且不允许我识别第二手指触摸。我也尝试在侦听器中返回true,但是在手动调用onTouchEvent函数之后,这只允许我只识别第一个手指触摸。
我的代码有什么问题?
是的,这是问题所在。用ACTION_MASK添加'和'解决了这个问题。让我生气的是,官方文件中对此没有提及。 – Bemipefe 2012-07-07 10:42:10
伯尼菲,我为你感到先生。任何人都可以在文档中犯错误。这可能是一个常见的错误,因为有时你不需要掩盖。我下次的唯一建议是使用调试器来查看传入的值,并查看是否有任何值是您的预期值。祝你好运,另一个Android粉丝! – 2012-07-07 17:15:21
我可以抓住ACTION_POINTER_UP和ACTION_POINTER_DOWN,但我找不到如何抓住ACTION_MOVE。我可以在视图监听器中以单指模式抓取它,但是当我将第二根手指放在屏幕上时,我可以从onTouchEvent方法中唯一指出的是UP和DOWN,而不是MOVE动作。如何解决它? – Bemipefe 2012-07-15 17:17:18