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

时间:2012-01-05 22:14:11

标签: java android multi-touch

我理解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 :(得分:0)

文档说“单个指针在运动事件中出现的顺序是未定义的。”因此,如果你用你的第一,第二和第三根手指触摸,它们实际上可以按0的顺序出现:[第一] 1:[第三] 2; [第二]。

然后你可以抬起你的第二根手指,下一个动作事件可能是0:[第三] 1:[第一]。至少这是我通过阅读文档的理解,但我可能是错的。

答案 1 :(得分:0)

正如Theblacknight所说,最大的问题是行为未定义。在我到目前为止测试过的每台Android 3.0+设备上,这与您期望的完全一样,ID和索引不会改变,一切正常。

但是在Android< 3.0,显然取决于手机。我的Droid2就像你的问题一样,但我朋友的G2工作正常。

我一直在尝试找出处理它的最佳方法,但还没有一个很好的解决方案。如果它是一致的并且只是交换了一次点ID,我可以接受它,但是如果你保持第二个点并点击第一个点开关,那么这两个点每次来回交换ID和索引。这非常令人沮丧。