【问题标题】:ACTION_UP Event in dispatchTouchEvent is Getting Triggered LatedispatchTouchEvent 中的 ACTION_UP 事件被延迟触发
【发布时间】:2019-01-22 08:14:24
【问题描述】:

我做了一个滑动手势并从 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。所以 ACTION_UP 将在 14 毫秒后被检索。这会阻止我在手指离开屏幕后立即执行一些平滑效果。

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

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

【问题讨论】:

    标签: android touch latency dispatch touch-event


    【解决方案1】:

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

    【讨论】:

    • ACTION_UP 已经发生。在我离开手指后 14 毫秒后检测到它。几乎有一帧延迟。我实际上在 136103418 毫秒的最后一次 ACTION_MOVE 事件中离开了手指。
    【解决方案2】:

    这个问题已在 Android P 中得到修复。看起来 Google 决定进行一些真正的 UI 动画改进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      相关资源
      最近更新 更多