2012-08-11 65 views
0

可能重复:
Pointer problems! (Android)获得来自多个手指(安卓)坐标

我一直在到处寻找了,简单地获得一个X和一个Y值码每个指针以及每个指针的一些不同的布尔变量,以便轻松理解发生了什么。

我一直在自己的代码上工作,但它不能像我想的那样工作。它会保存四对不同的X坐标和Y坐标,但问题是每当从屏幕上移除一个手指时,所有指针(在触摸[]中的布尔值)在一段时间内都会变为false。有谁知道如何让每个指针都是独立的,这样当一个手指从屏幕上移除时,只有布尔数组中的值会变成false?

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; 
} 

谢谢!

回答

0

您只使用一个action变量并遍历所有指针,因此它们全都相同。改为使用getActionMaskedgetActionIndex。见MotionEvent Android dev page

+0

谢谢你的回答!你有什么想法如何在我的代码中实现?我正在阅读开发者页面,但我无法将它们放在一起= P – Eric 2012-08-11 22:40:58

+0

对不起,不是在PC上进行测试,而是循环遍历所有指针,只需使用getActionIndex即可。然后,而不是使用操作,为ACTION_POINTER_UP和DOWN测试getActionMasked。另外,你可能需要清除所有ACTION_UP – weston 2012-08-12 10:19:11

+0

好的谢谢,我会尝试!我一直在寻找两天的示例代码,只是返回多个指针的坐标,但我还没有找到任何。应该真的很难遇到? – Eric 2012-08-12 11:50:08