从多个手指获取坐标(Android)

时间:2012-08-11 20:52:24

标签: java android

  

可能重复:
  Pointer problems! (Android)

我一直在寻找一个代码,只需为每个指针获取一个X和一个Y值,并为每个指针提供一些不同的布尔变量,以便轻松了解发生的情况。

我自己一直在研究代码,但它并不像我想的那样工作。它将保存四对不同的X坐标和Y坐标,但问题是无论何时从屏幕上移除一个手指,所有指针(在布尔触摸[]中)都会暂时变为假。有没有人知道如何使每个指针单独,所以当一个手指从屏幕上删除时,只有布尔数组中的值将变为假?

public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    int action = (event.getAction() & MotionEvent.ACTION_MASK);
    int pointCount = event.getPointerCount();

    for (int i = 0; i < pointCount; i++) {
        int id = event.getPointerId(i);

        if (id < MAX_NUMBER_OF_POINT) {

            xA[id] = (int) event.getX(i);
            yA[id] = (int) event.getY(i);

            if ((action == MotionEvent.ACTION_DOWN)
                    || (action == MotionEvent.ACTION_POINTER_DOWN)
                    || (action == MotionEvent.ACTION_MOVE)) {
                touching[id] = true;
            } else {

                touching[id] = false;
            }
        }
    }


    for (int i2 = 0; i2 < 5; i2++) {
        if (touching[i2] == false) {

            xA[i2] = 0;
            yA[i2] = 0;
        }
    }

    x1 = xA[0];
    x2 = xA[1];
    x3 = xA[2];
    x4 = xA[3];

    y1 = yA[0];
    y2 = yA[1];
    y3 = yA[2];
    y4 = yA[3];

    return true;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

您只使用一个action变量并循环遍历所有指针,因此它们都是相同的。请将getActionMaskedgetActionIndex一起使用。请参阅MotionEvent Android dev page