触摸事件传递流程

250 阅读1分钟
1 触摸事件传递分为三个步骤
  • 分发  dispatch
  • 拦截  intercept :只有ViewGroup有这个流程
  • 消费  onTouchEvent : 返回 true说明消费了事件
2 方法调用流程如下图



3 关键点:

  • 用户点击屏幕怎么调用到activity的dispatchTouchEvent方法的
用户点击会有输入事件通过驱动传入native层,然后ViewRootImpl 的 InputEventReceiver会接收到输入事件,调用decroView dispatchTouchEvent然后传递给activity dispatchTouchEvent
  • onToucheEvent 只有在DOWN事件的时候返回true 才说明消费了此事件
  • 在View消费了event事件的时候 ViewGroup可以再onInterceptToucheEvent的拦截事件,并且只需要拦截一次 然后View层会受到CANCEL消息, 后续事件就不会再传递给View层