对手势分发机制的一些理解
2016-03-31 22:27
246 查看
参考资料:
1、 http://www.cnblogs.com/linjzong/p/4191891.html
2、 http://www.cnblogs.com/mengdd/p/3394345.html
ViewGroup 的 onDispatchTouchEvent() 负责对手势的分发,当 onDispatchTouchEvent 方法返回false的时候,事件分发被拦截,从该ViewGroup开始在这之后的子View将不会接收到对事件处理的通知,onTouchEvent将会由上层ViewGroup或者Activity执行。(但是子View的ACTION_DOWN事件还是会执行)返回true的意思即分发事件被消费,那么viewGroup的onTouchevent方法将不会被调用。将会调用子View的onTouchEvent。
而子view的ondispatchTouchEvent方法并不执行分发对象,其执行的对象就是他自己,它的返回值是return onTouchEvent()。如果return true则表示改TouchEvent会被消费,即会执行ACTION_MOVE/UP事件。
当所有的子view都返回false时,viewgroup就会执行其自身的onTouchEvent 方法。(因为当子view返回false的时候,将会上传给parent的viewgroup的onTouchEvent方法,如果ViewGroup不处理,将会一直上传到Activity。)隧道式下发,冒泡式上传。
onInterceptTouchEVent返回true 时 ,拦截正在执行的手势,将由执行该方法的viewgroup的onTouchEvent方法执行Action一系列动作。此时子view将会收到一个Action_Cancel的状态,并在状态中处理(其ACTION_DOWN/MOVE/UP方法将不会被执行)。如果onInterceptTouchEvent返回true,则子view的ACTION_DOWN方法也不会执行,即手势被拦截,只会执行viewgroup的onTouchEvent。
如有错误欢迎指正,本文也是对应文章开头参考代码测试得出的个人见解。
1、 http://www.cnblogs.com/linjzong/p/4191891.html
2、 http://www.cnblogs.com/mengdd/p/3394345.html
ViewGroup 的 onDispatchTouchEvent() 负责对手势的分发,当 onDispatchTouchEvent 方法返回false的时候,事件分发被拦截,从该ViewGroup开始在这之后的子View将不会接收到对事件处理的通知,onTouchEvent将会由上层ViewGroup或者Activity执行。(但是子View的ACTION_DOWN事件还是会执行)返回true的意思即分发事件被消费,那么viewGroup的onTouchevent方法将不会被调用。将会调用子View的onTouchEvent。
而子view的ondispatchTouchEvent方法并不执行分发对象,其执行的对象就是他自己,它的返回值是return onTouchEvent()。如果return true则表示改TouchEvent会被消费,即会执行ACTION_MOVE/UP事件。
当所有的子view都返回false时,viewgroup就会执行其自身的onTouchEvent 方法。(因为当子view返回false的时候,将会上传给parent的viewgroup的onTouchEvent方法,如果ViewGroup不处理,将会一直上传到Activity。)隧道式下发,冒泡式上传。
onInterceptTouchEVent返回true 时 ,拦截正在执行的手势,将由执行该方法的viewgroup的onTouchEvent方法执行Action一系列动作。此时子view将会收到一个Action_Cancel的状态,并在状态中处理(其ACTION_DOWN/MOVE/UP方法将不会被执行)。如果onInterceptTouchEvent返回true,则子view的ACTION_DOWN方法也不会执行,即手势被拦截,只会执行viewgroup的onTouchEvent。
如有错误欢迎指正,本文也是对应文章开头参考代码测试得出的个人见解。
相关文章推荐
- 火车调度问题
- mysql update语句的用法详解
- leetcode_033 Search in Rotated Sorted Array
- 蓝桥杯_算法提高_金明的预算方案(动态规划、01背包变形)
- 【MVC 4】6.SportsSore:导航
- UI复习笔记1
- STL vector,deque,list
- 对委托的初步研究
- python3中的mysql数据库操作
- RxJava中的错误处理
- bzoj 3343: 教主的魔法
- 多态
- Spring框架中IOC和aop
- Java实现微信菜单json字符串拼接
- 中科院
- 一天一个Java基础——泛型
- Synchronize实现原理(很难)
- <result><param></param></result>问题
- Linux_ pipe 匿名管道 浅解
- 程序启动与运行