我做出了滑动手势,并从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?
答案 0 :(得分:0)
您无法检测到ACTION_UP,直到它发生。用户可以将手指放在屏幕上几秒钟,因此您可能需要重新考虑您的设计
答案 1 :(得分:0)
此问题已在Android P中修复。看起来Google决定对UI动画进行一些实际的改进。