安卓多点触控

3

我正在尝试使用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个回答

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

请问您的安卓设备和操作系统版本是多少?


我有一部安装了Cyanogen 7.1的Evo 4G手机,因此我认为它运行的是Android 2.3系统。 - user1036727
没事了,现在一切都正常工作。由于某种原因,如果我返回false,它就无法检测到新的触摸。当我将返回值更改为true时,一切正常工作。谢谢。 - user1036727
我的应用程序在执行代码时崩溃了。错误在这里:http://pastebin.com/3L35DWFZ - Thomas Vos

0
这是因为当您想要进行移动时,您的方法将返回false。所有多指操作都应该返回true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接