Android Multi Touch

时间:2011-11-09 00:52:58

标签: android ontouchevent multi-touch

所以,我试图用onTouchEvent检查多个屏幕触摸,但它似乎只是看起来第一次触摸。有人可以帮忙吗? 这是我的代码:

public boolean onTouchEvent(MotionEvent e)
{
    int num = e.getPointerCount();
    for(int a = 0;a<num;a++)
    {
    int x = (int) e.getX(e.getPointerId(a));
    int y = (int) e.getY(e.getPointerId(a));
    check(x,y);
    }

    return false;
}

我浏览了很多这些论坛,但大多数与多点触控相关的主题都是关于缩放的。

2 个答案:

答案 0 :(得分:4)

您的代码在我的设备上运行良好(Nexus S,Android 2.3)。它会读取所有内容。

这是测试代码:

  public boolean onTouchEvent(MotionEvent e) {
    int num = e.getPointerCount();
    for (int a = 0; a < num; a++) {
      int x = (int) e.getX(e.getPointerId(a));
      int y = (int) e.getY(e.getPointerId(a));
      Log.d(TAG, "pointer_" + e.getPointerId(a) + ": x = " + x
          + ", y = " + y);
    }
    return false;
  }

这是日志(用5个手指触摸):

11-09 17:32:55.542: D/Touch(20594): pointer_0: x = 169, y = 613
11-09 17:32:55.542: D/Touch(20594): pointer_1: x = 407, y = 289
11-09 17:32:55.542: D/Touch(20594): pointer_2: x = 62, y = 441
11-09 17:32:55.542: D/Touch(20594): pointer_3: x = 251, y = 202
11-09 17:32:55.542: D/Touch(20594): pointer_4: x = 132, y = 256

您的Android设备和操作系统版本是什么?

答案 1 :(得分:0)

这是因为当您想要移动时,您的方法将return false。所有多指操作都应return true