事件分发机制
来源:互联网 发布:哪里有呼死你软件出售 编辑:程序博客网 时间:2024/06/01 10:23
所以如果我们没有对控件里面的方法进行重写或更改返回值,而直接用super调用父类的默认实现,那么整个事件流向应该是从Activity---->ViewGroup--->View 从上往下调用dispatchTouchEvent方法,一直到叶子节点(View)的时候,再由View--->ViewGroup--->Activity从下往上调用onTouchEvent方法。
2、dispatchTouchEvent 和 onTouchEvent 一旦return true,事件就停止传递了(到达终点)(没有谁能再收到这个事件)。看下图中只要return true事件就没再继续传下去了,对于return true我们经常说事件被消费了,消费了的意思就是事件走到这里就是终点,不会往下传,没有谁能再收到这个事件了。
ViewGroup 和View的这些方法的默认实现就是会让整个事件安装U型完整走完,所以 return super.xxxxxx() 就会让事件依照U型的方向的完整走完整个事件流动路径),中间不做任何改动,不回溯、不终止,每个环节都走到。
对于ACTION_MOVE、ACTION_UP总结:ACTION_DOWN事件在哪个控件消费了(return true), 那么ACTION_MOVE和ACTION_UP就会从上往下(通过dispatchTouchEvent)做事件分发往下传,就只会传到这个控件,不会继续往下传,如果ACTION_DOWN事件是在dispatchTouchEvent消费,那么事件到此为止停止传递,如果ACTION_DOWN事件是在onTouchEvent消费的,那么会把ACTION_MOVE或ACTION_UP事件传给该控件的onTouchEvent处理并结束传递。
tips : 最近刚做了一个自定义控件,里面做了不少事件分发的处理和交互,个人是觉得可以当做本篇文章的一个实践,大家可以看下源码事件分发相关的的部分代码,
作者:Kelin
链接:http://www.jianshu.com/p/e99b5e8bd67b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- OnTouchEvent事件分发机制
- android事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android 事件分发机制
- android 事件分发机制
- Android事件分发机制
- android 事件分发机制
- android事件分发机制
- Android 事件分发机制
- android事件分发机制
- 【cocos2dx事件分发机制】
- android 事件分发机制
- android 事件分发机制
- Android 事件分发机制
- Android事件分发机制
- mysql Sort aborted: Query execution was interrupted
- [UVa 1610] 聚会游戏(Party Games)
- Java 正则表达式之江湖小虾米篇
- java 集合类深入理解
- tcp 状态转换图以及问题点
- 事件分发机制
- leetcode--Contains Duplicate III
- java_时间戳与Date_相互转化
- AHK语法
- 关于面向对象思想
- 二三十岁我们为什么要奋斗?月入上万方向在哪里?
- OpenJudge[7545]二维数组回形遍历
- javascript练习(二)
- Python 俄罗斯方块