onInterceptTouchEvent和onTouchEvent调用时序
来源:互联网 发布:8月进出口数据 编辑:程序博客网 时间:2024/06/16 08:04
onInterceptTouchEvent:onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个childView触发onTouchEvent()之前对相关事件进行一次拦截,Android这么设计的想法也很好理解,由于ViewGroup会包含若干childView,因此需要能够统一监控各种touch事件的机会,因此纯粹的不能包含子view的控件是没有这个方法的,如LinearLayout就有,TextView就没有。
onInterceptTouchEvent()使用也很简单,如果在ViewGroup里覆写了该方法,那么就可以对各种touch事件加以拦截。但是如何拦截,是否所有的touch事件都需要拦截则是比较复杂的,touch事件在onInterceptTouchEvent()和onTouchEvent以及各个childView间的传递机制完全取决于onInterceptTouchEvent()和onTouchEvent()的返回值。并且,针对down事件处理的返回值直接影响到后续move和up事件的接收和传递。
关于返回值的问题,基本规则很清楚,如果return true,那么表示该方法消费了此次事件,如果return false,那么表示该方法并未处理完全,该事件仍然需要以某种方式传递下去继续等待处理。
由于onInterceptTouchEvent()的机制比较复杂,上面的说明写的也比较复杂,总结一下,基本的规则是:
1. down事件首先会传递到onInterceptTouchEvent()方法
2. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理。
3. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件。
4. 如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的view的onTouchEvent()处理。
5. 如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递给该view的onTouchEvent()处理
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent 和 onTouchEvent 调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- 静态链接和动态链接
- 右键里没有新建txt文件选项 win7
- sql日期及时间函数的使用
- iPhone开发之深入浅出 (7) — ARC总结
- webkit在linux平台下的编译
- onInterceptTouchEvent和onTouchEvent调用时序
- 学习的时候选择一本好书是多么重要
- sublime配置全攻略 .
- ios推送的两篇文章
- CopyOnWriteArrayList
- Linux手动添加用户账号
- hadoop 安装出现的几种异常的处理方法,hadoop无法启动,no namenode to stop问题的解决方法,no datanode
- cocos2d-触摸分发原理
- STL中bind1st和bind2nd的区别