安卓多点触控问题

3

我在处理多点触摸事件时遇到了真正的问题。基本上,我需要检测是否有人在触摸屏幕的同时释放了手指。

根据先前回答的这个问题,我应该使用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上臭名昭著的触摸屏引起的。或者我做错了什么根本性的错误。是否有一些经过测试的代码可以可靠地检测到从触摸屏上抬起任何一个手指?
2个回答

1

是的,我知道触摸屏不太好(至少在多点触控方面)。 - Kevin

0

这个类似乎有一个解决方案,可以解决一些 Android 1.x/2.x 设备上由于多点触控实现不佳而引起的问题。

http://code.google.com/p/android-multitouch-controller/

您提到的问题在此处解释如下:

注意:旋转在使用 Synaptics 或类似“2x1D”传感器(G1、MyTouch、Droid、Nexus One)而不是像 HTC Incredible 或 HTC EVO 4G 那样的真正的 2D 传感器的旧触摸屏设备上存在一些问题。这种古怪的行为是由于当两个点在 X 或 Y 上靠近时出现“轴捕捉”,以及当 (x1,y1) 和 (x2,y2) 混淆为 (x1,y2) 和 (x2,y1) 时出现的“纵坐标混淆”。除了将两个手指保持在相同的两个相对象限上(即将它们放在前导或后续对角线上),或者禁止在这些设备上进行旋转外,没有其他方法可以解决这个问题。(尽管网络上有误导性的信息,但也没有固件或软件更新可以解决这个问题,这是硬件限制。希望所有新手机都有真正的 2D 触摸传感器。)


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