Bem*_*efe 6 java events android multi-touch
文档说明了这一点:
手势以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() );
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,永远不会输入第二个if.该活动包含2个视图和2个OnTouchListener,我知道只有当活动的视图不消耗事件时才调用onTouchEvent所以我试图在监听器中返回false,这样我只能识别第一次手指触摸但是这可以避免听众收到ACTION_UP事件,也不允许我识别第二次手指触摸.我也试图在监听器中返回true,但是在手动调用onTouchEvent函数之后,这也让我只能识别第一个手指触摸.
我的代码有什么问题?
The*_*oid 16
我相信你的代码缺少掩码操作,如:
switch (motionaction & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
}
Run Code Online (Sandbox Code Playgroud)
此代码应该能够检查ACTION_POINTER_DOWN.
祝你好运并告诉我们会发生什么.
汤米克威