源码阅读:Android UI分发机制
方法名
dispatchTouchEvent(MotionEvent ev)
基础逻辑
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean intercepted = onInterceptTouchEvent(ev);
boolean consume = false;
if(intercepted){
consume = onToucheEvent(ev);
}else{
consume = child.dispachToucheEvent(ev);
}
return consume;
}
这是一段伪代码
在点击事件的分发过程中,dispatchTouchEvent是首先进行处理的
其中onInterceptTouchEvent的返回值表明这个ViewGroup会不会拦截这个事件,如果拦截,表示这个事件会交由这个ViewGroup的onTouchEvent来处理
如果不拦截,就表示需要在子控件中去处理这个点击事件;
不管这个事件最终由谁处理,都会得到一个消息是否消耗的consume变量,这个变量表示的是消息是否被消耗掉
如果消息不被消耗掉的话 最终该消息会交由Activity的onTouchEvent来处理
浙公网安备 33010602011771号