Android多点触控 - 确定哪个手指抬起?

5

我理解ID和Index之间的区别,其中ID似乎在事件中保持一致,而索引可以变化。

然而,我不断地得到不同的ID,并且希望在这个领域有所了解。我已经阅读了所有官方的Android文档和大量的博客,但似乎没有简明扼要的答案。

如果我在屏幕上放三根手指,那么就会出现ID为0、1和2的点。只要这些手指在屏幕上,这些ID就会对应这三个点并保持不变,是吗?

一旦一个手指离开屏幕,比如第二个手指,跟踪的点仍然存在。x0、y0和x1、y1仍然有一个点,但ID现在变成了0和1,即使ID号为1的点被抬起了。

是否有一种方法可以看到手指#2被抬起,并继续使用ID 0和ID 2跟踪这些点?

我的理解是这需要手动完成,并且ID值将保持相同的顺序,第二个放置的手指始终具有比第一个更高的ID,但当手指被移除时,它们的值可能不会保持不变。

2个回答

0

这个问题的症结在于,正如Theblacknight所说,它的行为是未定义的。在我测试过的每一台Android 3.0+设备上,它都像你期望的那样工作,ID和索引不会改变,一切都很好。

但在 Android < 3.0 上,显然取决于手机。我的Droid2在这方面表现得像你的问题,但我的朋友的G2正常工作。

我一直在努力寻找最好的处理方法,但目前还没有一个很好的解决方案。如果它是一致的,并且只是交换了一次点的ID,我可以接受它,但如果你按住第二个点并反复点击第一个点,这两个点的ID和索引每次都会交换。这非常令人沮丧。


0
文档中说:“单个指针在运动事件中出现的顺序是未定义的。”。因此,如果您用第一、第二和第三个手指触摸,它们实际上可能以0:[first]1:[third]2; [second]的顺序出现。
然后,您可以放开第二个手指,下一个运动事件可能是0:[third]1:[first]。至少这是我从阅读文档中理解的,但我可能是错的。

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