源码阅读: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来处理

posted on 2026-02-13 10:16  落子无悔96  阅读(11)  评论(0)    收藏  举报

导航