在读取一系列事件的getX()
和值时,我发现这些事件将返回坐标,直到与这些坐标的某个距离阈值已通过。从那时起,将始终返回正确的坐标。getY()
onTouch
ACTION_MOVE
ACTION_DOWN
重现步骤:
- 使用默认活动创建一个新的应用程序项目
将以下方法添加到默认活动:
@Override public boolean onTouchEvent(MotionEvent event) { Log.i("getXYDelay", "(x,y)=("+event.getX() + "," + event.getY() + ")"); return super.onTouchEvent(event); }
在设备上运行并在您触摸和拖动时观看 logcat
您应该看到,在每次触摸和拖动时,getX()
/getY()
结果仅在您的手指移动半个中心米左右后才开始变化,并且从那时起它是准确的。
我可以看到在很多情况下这会有所帮助,但它会导致我正在编写的应用程序出现问题,所以:
- 这种最初的滞后是否可以克服?还是可以绕过?
- 它是特定于设备的吗?
理想情况下,我想为单个 OpenGL 表面视图关闭它。
笔记:
- 当我使用三星 Note SPen 时不会发生这种情况。
- 同样的情况也发生在
getRawX()/getRawY()
. - 这不会发生在模拟器上,因此可能来自硬件触摸驱动程序。
更新:我假设这是由硬件驱动程序或类似级别引起的,因此超出了应用程序的控制范围。我也尝试将其发布到 android 开发人员组,但几周后,版主似乎仍然坐在我的帖子上。