Android 简述事件分发机制
2016-10-14 19:08
225 查看
1.ViewGroup有三个方法:
Touch 事件相关方法 | 方法功能 | 标记 |
---|---|---|
dispatchTouchEvent(MotionEvent ev) | 事件分发 | 1 |
onInterceptTouchEvent(MotionEvent ev) | 事件拦截 | 2 |
onTouchEvent(MotionEvent ev) | 处理事件 | 3 |
这样,ViewGroup和View对应的方法:
ViewGroup/View | 方法 |
---|---|
ViewGroup | 1、2、3 |
View | 1、3 |
第一次进入ViewGroup:
走1:Return true:停止传递,直接走自己的3方法
False:传给下一个ViewGroup的1方法
Return super.dispatchTouchEvent(ev):走自己的2方法—–>
走2:
True:停止传递,走自己的3方法
False:传给下一个View的1方法
Return super.onInterceptTouchEvent(ev):走自己的3方法(与true相同)—–>(默认的是父类拦截)
走3:
True:自己处理掉事件
False:事件向上传递,由上一级的3处理
Return super.onTouchEvent(ev):事件向上传递,由上一级的3处理(与false相同)—->
事件回传的时候走的是各自View的3方法:
true:在当前View消费掉事件
False:返到上一级,由上一级的onTouchEvent处理—->
上一级返回为true就处理;返回false就接着往上一级传递!如果最外层的View没有处理,事件消失。
如果按住控件不放,再移到其它地方,事件就会取消。
对应图示:
2.焦点冲突
比如:ListView条目点击事件,里面的子view还有点击事件:在item的根节点里面设置:android:descendantFocusability=“blocksDescendants”
3.请求父容器不要拦截我的事件:
getParent().requestDisallowInterceptTouchEvent(false);
相关文章推荐
- Android事件分发机制简述
- Android事件分发机制简述
- Android 编程下 Touch 事件的分发和消费机制
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android 编程下 Touch 事件的分发和消费机制
- Android 编程下 Touch 事件的分发和消费机制
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android 编程下 Touch 事件的分发和消费机制
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android事件分发机制完全解析,带你从源码的角度彻底理解
- android窗体加载过程剖析之事件的分发机制
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android 编程下 Touch 事件的分发和消费机制(一)
- Android之Touch事件分发机制