在我的应用程序中,我需要处理移动和单击事件.
单击是一个ACTION_DOWN操作的序列,几个ACTION_MOVE操作和一个ACTION_UP操作.理论上,如果您获得ACTION_DOWN事件然后获得ACTION_UP事件 - 这意味着用户刚刚单击了您的视图.
但实际上,这个序列在某些设备上不起作用.在我的三星Galaxy Gio上,只需单击我的视图:ACTION_DOWN,几次ACTION_MOVE,然后ACTION_UP即可获得此类序列.即我使用ACTION_MOVE动作代码获得了一些无法预料的OnTouchEvent激活.我从未(或几乎从不)获得序列ACTION_DOWN - > ACTION_UP.
我也不能使用OnClickListener,因为它没有给出点击的位置.那么如何检测点击事件并将其与移动区分开来呢?
我有一个 C# Xamarin android应用程序,它在webview中托管了一个 reactjs 应用程序。
在触摸屏安卓设备上使用此应用程序时,偶尔点击屏幕似乎会被忽略。
似乎正在发生的事情是,点击被解释为一个迷你拖动事件,因为点击中有一些小的定向移动。
查看android日志,对于失败的点击,我注意到输出如下:
adb -d logcat -s CustomFrequencyManagerService
06-19 13:35:49.225 2945 9989 D CustomFrequencyManagerService: acquireDVFSLockLocked : type : DVFS_MIN_LIMIT frequency : 839000 uid : 1000 pid : 2945 pkgName : GESTURE_DETECTED@CPU_MIN@49
06-19 13:35:49.781 2945 2945 D CustomFrequencyManagerService: releaseDVFSLockLocked : Getting Lock type frm List : DVFS_MIN_LIMIT frequency : 839000 uid : 1000 pid : 2945 tag : GESTURE_DETECTED@CPU_MIN@49
Run Code Online (Sandbox Code Playgroud)
请注意GESTURE_DETECTED日志条目的部分。
但是对于成功的点击,CustomFrequencyManagerService 在日志中没有输出。
从reactjs应用程序的角度来看:
我注意到失败的水龙头会发出以下事件:
touchstart
touchend …Run Code Online (Sandbox Code Playgroud)