android - 谁调用 Activity.dispatchTouchEvent( event )?

标签 android android-sensors android-touch-event

我正在尝试将文件中的触摸事件添加到当前应用程序(根据文件中找到的数据构建新的触摸事件),并且我正在尝试了解“真实”触摸事件时的调用链被触发。

从我进行的所有搜索中,我发现 Activity.dispatchTouchEvent(ev) 是我们有触摸事件时调用的第一个方法,然后它被转发给 ViewGroup.dispatchTouchEvent 然后到 View.dispatchTouchEvent

我想找到在 Activity.dispatchTouchEvent(ev) 之前调用的内容以及事件如何从 HW 传输到此方法。

最佳答案

也许您想要的是 android 输入框架的工作原理。以下有关 android 输入框架架构的博客可能会对您有所帮助。

Android Input Framework Architecture[Part 1] : Introduction to InputReader & InputDispatcher

输入过程可以简单的表示为:

输入硬件------> 内核/驱动(输入协议(protocol))-----> EventHub(framework/base/libs/ui) getevent------> InputReader ----> inputDispatcher ----> 窗口管理器。

  1. 首先,InputReader 将元输入事件转换为 android 事件(等 MotionEvent/KeyEvent)。
  2. 然后,InputDispatcher 将事件分发给 WindowManager
  3. WindowManager 调用 Window.Callback.dispatchTouchEvent(***)。

关于android - 谁调用 Activity.dispatchTouchEvent( event )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617921/

相关文章:

android - 如何/我应该实现卡尔曼滤波器以获得准确的加速度计数据?

android - 防止单击更改 SeekBar 进度

android - 无法在单选组中显示按钮的值

android - 为什么 Epoxy recyclerview 不在 kotlin 中生成自定义模型类

android - 设置选择方法在 android 的画廊中不起作用

android - SearchView getActionView 返回 null

java - ANDROID--如何找到手机相对于周围世界的位置?

Android:除了 Location.getAltitude() 之外,还有其他获取高度的方法吗? (我听说过使用传感器)

android:如何检测用户何时触摸左侧 20% 的 View 区域?

android - ScrollView 中水平回收 View 的滚动问题