我正在将基于触摸的交互记录到数据库中,并且无法记录所有指针。因此,当我处理 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 最低的指针吗?