Java Android多点触摸问题

Java Android多点触摸问题,java,android,multi-touch,Java,Android,Multi Touch,我相信这是一个相当简单的问题,但我似乎想不出解决这个小问题的办法。首先,这是我的代码: switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: Log.w("Platformer", "primary down"); break; case MotionEvent.ACTION_UP:

我相信这是一个相当简单的问题,但我似乎想不出解决这个小问题的办法。首先,这是我的代码:

switch (event.getAction() & MotionEvent.ACTION_MASK) {

        case MotionEvent.ACTION_DOWN:
            Log.w("Platformer", "primary down");
            break;

        case MotionEvent.ACTION_UP:
            Log.w("Platformer", "primary up");
            break;

        case MotionEvent.ACTION_POINTER_1_DOWN:
            Log.w("Platformer", "secondary down");
            break;

        case MotionEvent.ACTION_POINTER_1_UP:
            Log.w("Platformer", "secondary up");
            break;
        }
我想让它做的就是当我按下时,它会在日志中显示主指针或次指针是否已按下,当我松开时,它会做同样的事情。问题是,它总是在向下运行,但在向上运行时,无论出现的第一个手指是什么,无论它最初是主指针还是次指针,它都会返回次指针已删除的结果。有什么想法吗?我猜这是件简单的事情,但我不知道该从哪里如实地看。提前谢谢

WWaldo

用于获取正在选择的指针

编辑 要回答评论中的问题,请尝试:

    for (int i = 0; i < ev.getPointerCount(); i++) {
        switch (ev.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_POINTER_DOWN:
            Log.d(TAG,"down "+ ev.getPointerId(i));
            break;
        case MotionEvent.ACTION_MOVE:
            Log.d(TAG,"move "+ ev.getPointerId(i));
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_POINTER_UP:
            Log.d(TAG,"up "+ ev.getPointerId(i));
            break;  
        }
    }
for(int i=0;i
动作向上表示手势结束,即所有指针都向上

动作\u指针\u向上表示非主指针向上,您必须检查事件以确定哪个,即:

int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> 
     MotionEvent.ACTION_POINTER_INDEX_SHIFT;
int pointerId = event.getPointerId(pointerIndex)
现在不推荐使用动作指针1和动作指针2


您应该注意到,在Android版本上,这比姜饼版本的问题要严重得多。我发现如果我提起两次触球中的第一次触球并将其放回原位,指针会交换索引和ID。这非常令人沮丧。

你能解释一下该方法的工作原理吗?我以前看过,但我不确定它到底是怎么工作的。我的意思是,这个参数基本上是你试图从中得到的信息,我可以告诉你,但是我没有找到任何例子,所以我不知道