我在尝试处理多点触控事件时遇到了一个真正的问题。基本上我需要检测是否有人在其他地方触摸屏幕时释放了手指。
根据this之前回答的问题,我应该使用MotionEvent.ACTION_POINTER_UP MotionEvent.ACTION_UP。
据我所知,以下代码应该告诉我手指是否已被抬起:
int action = event.getActionMasked();
mCurUp = ( action == MotionEvent.ACTION_UP ) || ( action == MotionEvent.ACTION_POINTER_UP );
我在实践中看到的是,这个一些当时有效。如果我非常小心,我可以将我的左手指放在屏幕上并抬起我的右手指,根本不会发生任何事件!通常在某些时候我的左手指会摇晃,产生 ACTION_MOVE 事件。此时它会生成一个事件(262),我认为该事件与 ACTION_POINTER_UP
相关联所以我想知道是否有其他人看过这个,我也怀疑它可能是我HTC Desire造成这个臭名昭着的劣质触摸屏。或许我正在做一些根本错误的事情。有没有人有一些经过测试的代码可以可靠检测到任何一根手指从触摸屏上抬起来?
答案 0 :(得分:1)
奇怪的行为可能是由您的设备(HTC Desire == Nexus One屏幕)引起的,而不是您的代码。
你知道虽然Android支持多点触控,但不是每部手机都支持真正的多点触控吗?
阅读本文
http://androidandme.com/2010/03/news/is-multitouch-broken-on-the-nexus-one/
和这个
http://groups.google.com/group/android-developers/msg/70e9dd235d519955
干杯
答案 1 :(得分:0)
这个类似乎有一个解决方法可以解决你的问题以及许多其他问题是由一些Android 1.x / 2.x设备上的错误多点触控实现引起的
http://code.google.com/p/android-multitouch-controller/
您提到的问题解释如下:
注意:在使用Synaptics或更高版本的旧触摸屏设备上,旋转是古怪的 类似Synaptics的“2x1D”传感器(G1,MyTouch,Droid,Nexus One)而不是真正的2D 传感器如HTC Incredible或HTC EVO 4G。奇怪的行为来自于 当两个点在X或Y中靠近时“轴对齐”,并且“纵坐标 混淆“其中(x1,y1)和(x2,y2)混淆了(x1,y2)和(x2,y1)。 除了将两个手指保持在同一个手指之外,没有办法解决这个问题 相对象限(即将它们保持在前导或尾随的对角线上),或者 禁止在这些设备上旋转。 (尽管Web上存在错误信息,但也没有固件或软件 更新可以解决此问题,这是一个硬件限制。希望所有人 较新的手机将拥有真正的2D触摸传感器。)