我正在将基于触摸的交互记录到数据库中,并且无法记录所有指针。因此,当我处理MotionEvent中包含的指针(和历史指针)时,我只是忽略了某个索引之后的指针。但是,具有最低ID的指针对我来说是最相关的。是否可以安全地假设指针按指针id的顺序排序(索引),即使这些id不能保证从零开始?
测试表明这个假设是正确的,但我在文档中找不到任何验证。有人能够对此有所了解吗?
从Android MotionEvent documentation开始,如何处理所有指针:
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最低的指针吗?
答案 0 :(得分:0)
根据我的经验,指针的顺序是屏幕上的触摸顺序,因此第一个指针是第一个触摸,而第三个手指触摸同时是指针3。
因此,如果您只想限制为2或3个手指手势,则可以将Max指针设置为2或3。