Android:事件分发机制

分发脉络图

点击事件分为四件:down、move、up、cancel,前三个是我们要关注的
事件分成层次分为四层:Activity、ViewGroup、View
涉及的方法分为三个:dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent
在这里插入图片描述

分发规律

  • Activty通过return super.dispatchTouchEvent()向下分发事件,无论return false/true都会消费事件
  • ViewGroup会收到Activity传下来的事件,通过onInterceptTouchEvent返回值检查是否向下传递,若返回值为ture则调用VewGroup的onTouch,且不将事件不向下传递。
  • 传递则需要返回false或super.dispatchTouchEvent
  • 若onTouch返回false表示事件没有被消费,接着到onTouchEvent,其中会触发click监听器
  • 若onInterceptTouchEvent返回false也会传递到子view
  • 子view收到事件后,可通过super.dispatchTouchEvent调用view自身的onTouchEvent,也可返回false调用ViewGroup的onTouchEvent
  • move和up事件,则是会传递到down被拦截的组件,调用对应注解的onTouch事件或父view的

猜你喜欢

转载自blog.csdn.net/weixin_51109304/article/details/131152635