dispatchTouchEvent中的ACTION_UP事件被延迟触发

时间:2018-08-15 12:42:01

标签: android touch latency dispatch touch-event

我做出了滑动手势,并从ScrollView中的dispatchTouchEvent进行了跟踪。但是,在一帧之后将检测到滑动手势的结束。请参阅下面的最后两个事件,最后两个手势是ACTION_MOVE和ACTION_UP。但是它们的接触点完全相同,但是它们的事件时间却不同。

action = ACTION_MOVE,x [0] = 734.165,y [0] = 1241.4056,historySize = 2,eventTime = 136103401 action = ACTION_ MOVE ,x [0] = 747.8897 ,y [0] = 1077.508 ,historySize = 2,eventTime = 136103418 action = ACTION_ UP ,x [0] = 747.8897 ,y [0] = 1077.508 ,historySize = 0,eventTime = 136103432

136103432-136103418 =14。因此14毫秒后将检索ACTION_UP。这样可以防止我在手指离开屏幕后立即出现一些平滑效果。

您可以从此处查看完整的日志:https://zerobin.net/?a71539bf3862abdb#xXjCPrjk/Fi7l+N++9oivQkieFRQ3KA6gwQ0pU2NTYc=

那么,如何在dispatchTouchEvent中更早地检测到ACTION_UP?

2 个答案:

答案 0 :(得分:0)

您无法检测到ACTION_UP,直到它发生。用户可以将手指放在屏幕上几秒钟,因此您可能需要重新考虑您的设计

答案 1 :(得分:0)

此问题已在Android P中修复。看起来Google决定对UI动画进行一些实际的改进。