1

我正在将基于触摸的交互记录到数据库中,并且无法记录所有指针。因此,当我处理 MotionEvent 中包含的指针(和历史指针)时,我只是忽略了某个索引之后的指针。但是,具有最低 id 的指针对我来说是最相关的。假设指针按指针 ​​id 的顺序排序(索引)是否安全,即使这些 id 不能保证从零开始?

测试表明这个假设是正确的,但我在文档中找不到任何验证。有人能对此有所了解吗?

Android MotionEvent 文档中,如何处理所有指针:

void printSamples(MotionEvent ev) {
    final int historySize = ev.getHistorySize();
    final int pointerCount = ev.getPointerCount();
    for (int h = 0; h < historySize; h++) {
        System.out.printf("At time %d:", ev.getHistoricalEventTime(h));
        for (int p = 0; p < pointerCount; p++) {
            System.out.printf("  pointer %d: (%f,%f)",
                ev.getPointerId(p), ev.getHistoricalX(p, h), ev.getHistoricalY(p, h));
        }
    }
    System.out.printf("At time %d:", ev.getEventTime());
    for (int p = 0; p < pointerCount; p++) {
        System.out.printf("  pointer %d: (%f,%f)",
            ev.getPointerId(p), ev.getX(p), ev.getY(p));
    }
 }

我的代码更改了行

final int pointerCount = ev.getPointerCount();

final int pointerCount = Math.min(ev.getPointerCount(), MAX_POINTER_COUNT);

它实际上只获得每个指针循环中的前 MAX_POINTER_COUNT 个指针。我可以依赖那些指针 ID 最低的指针吗?

4

1 回答 1

0

根据我的经验,指针的顺序是屏幕上的触摸顺序,所以第一个指针是第一次触摸,就像第三个手指同时触摸一样是指针 3。

因此,如果您只想限制 2 或 3 个手指手势,您可以将 Max 指针设置为 2 或 3。

于 2012-09-06T17:33:59.910 回答