【问题标题】:Android Multi Touch安卓多点触控
【发布时间】:2011-11-09 00:52:58
【问题描述】:

所以,我正在尝试使用 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;
}

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

【问题讨论】:

    标签: android touch-event multi-touch


    【解决方案1】:

    您的代码在我的设备(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 设备和操作系统版本是什么?

    【讨论】:

    • 我在 Cyanogen 7.1 上有一个 evo 4g,所以我认为是 android 2.3。
    • 没关系,现在一切正常。出于某种原因,如果我返回 false,它不会检测到新的触摸。当我将返回值更改为 true 时,一切正常。谢谢
    • 我的应用程序在我执行代码时崩溃。错误在这里:pastebin.com/3L35DWFZ
    【解决方案2】:

    发生这种情况是因为当您想要移动时,您的方法将return false。所有多指动作都应该return true

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多