Android事件分发机制熟悉

孤人 提交于 2019-12-10 15:36:21

一,android事件分发的对象,Activity,View,ViewGroup

二,事件分发主要包括三个方法,
dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent

三,事件正常分发流程,
场景:Activity包括一个ViewGroup,ViewGroup里面又包括一个View如下图
在这里插入图片描述
一次正常的流程分发
Activity dispatchTouchEvent
ViewGroup dispatchTouchEvent
ViewGroup onInterceptTouchEvent
View dispatchTouchEvent
View onTouchEvent
ViewGroup onTouchEvent
Activity onTouchEvent

总体过程是先向下,再回溯。

四,关键方法说明

1,dispatchTouchEvent,根据返回值决定事件是否继续分发

  1. return false 事件停止分发,返回父控件的onTouchEvent
  2. return true 顾名思义,事件被消费,就此打住,不在分发
  3. return return super.dispatchTouchEvent(ev) 事件正常分发

2,onInterceptTouchEvent,根据返回值决定是否要拦截事件,注意此方法只存在于ViewGroup中

  1. return false 事件不拦截,与 super.onInterceptTouchEvent(ev);功能相同
  2. return true 事件拦截,进入同级onTouchEvent方法
  3. return super.onInterceptTouchEvent(ev); 事件不拦截,按正常流程分发

3,onTouchEvent,根据返回值决定是否消费此事件。

  1. return false 事件不消费,按正常流程分发 同super.onTouchEvent(event)
  2. return true 事件消费,就此打住
  3. return return super.onTouchEvent(event); 按正常流程分发
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!