android view(3)事件处理流程
一、分发
当一个MotionEvent产生后,系统要把这个事件传递给具体的view,这个传递过程就是分发。
1.public boolean onInterceptTouchEvent(MotionEvent event)
返回Boolean结果,表示是否拦截处理此事件,默认返回false表示不拦截。只有viewgroup才有此方法,view没有,所以view收到后会立即执行onTouchEvent。
2.public boolean onTouchEvent(MotionEvent event)
自己去处理这个事件,返回结果表示是否消耗此事件。view的onTouchEvent默认消耗此事件。
3.public boolean dispatchTouchEvent(MotionEvent event)
继续往子元素分发事件,返回结果表示是否消耗此事件
伪代码如下
public boolean dispatchTouchEvent(MotionEvent event){
boolean consume = false;
if(onInterceptTouchEvent(event)){
consume = onTouchEvent(event);
}else{
consume = child.dispatchTouchEvent(event);
}
return consume;
}
分发会从Activity开始,经过PhoneWindow,DecorView,再传入下面的元素中。
二、处理
如果View的onTouchEvent返回了False,表示不处理。就会调上层的onTouchEvent,上层不处理,继续往上反馈。
更多相关文章
- 浅谈Android(安卓)onTouchEvent 与 onInterceptTouchEvent的区别
- [置顶] Android的monkey测试
- android开发――ListView组件
- Android(安卓)client和服务器JSP互传中国
- Android(安卓)View事件传递详解
- android 事件处理--onInterceptTouchEvent和onTouchEvent调用时
- Android(安卓)之事件处理(二)基于监听的事件处理
- monkey基础学习
- monkey工具简介