文档说明了这一点:
手势以提供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() );
}
}
不幸的是,第二个if永远不会输入。该活动包含2个视图,其中包含2个 OnTouchListener ,我知道只有当活动视图不消耗该事件时才会调用 onTouchEvent ,因此我尝试在听众,并且以这种方式我只能识别第一次手指触摸但这避免了听众接收ACTION_UP事件并且不允许我识别第二次手指触摸。我也试图在监听器中返回true,但是在手动调用onTouchEvent函数之后,这也让我只能识别第一个手指触摸。
我的代码出了什么问题?
答案 0 :(得分:16)
我相信你的代码缺少掩码操作,如:
switch (motionaction & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
}
此代码应该能够检查ACTION_POINTER_DOWN。
祝你好运&告诉我们会发生什么。Tommy Kwee