处理android中的多点触控事件

时间:2013-09-29 18:12:07

标签: java android multi-touch

我在使用android的多点触控系统时遇到了一些麻烦。我去过他们的文档,关于它是如何工作的,我认为这里的代码可能有用(注意,指针是一个点数组,以便我可以通过ID跟踪每个点)然而,我发现它来的时候要拖动,它只会更新ID为0的指针。我不知道这里出了什么问题,有人可以帮帮我吗? (另外值得注意的是,此方法是从另一个类中的onTouch()事件调用的,是的,它返回true :))

public void tap(MotionEvent e) {
    int index = MotionEventCompat.getActionIndex(e);
    int ID = MotionEventCompat.getPointerId(e, index);
    switch(MotionEventCompat.getActionMasked(e)) {
    case MotionEvent.ACTION_DOWN:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    case MotionEvent.ACTION_POINTER_DOWN:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    case MotionEvent.ACTION_MOVE:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    case MotionEvent.ACTION_UP:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    }
}

1 个答案:

答案 0 :(得分:1)

ID 0是正确的,因为您只需用一根手指即可拖动。指针意味着你的手指。在您的方案中,此处的索引也应始终为0。此外,您只需使用MotionEvent e,例如

e.getPointerCount ();
e.getX (pointerIndex);
e.getY (pointerIndex);