其他分享
首页 > 其他分享> > 九、View事件传递机制

九、View事件传递机制

作者:互联网

事件传递机制:

责任链机制,从上到下,然后冒泡回到起点

事件传递围绕这三个方法进行

传递流程

PhoneWindow -> DecorView -> rootview->ViewGroup ->View

ViewGrop 只有自己要拦截掉(onInterceptTouchEvent 返回true),就会走onTouchEvent方法,不然是不会走得

onInterceptTouchEvent 返回false 子View的dispatchTouchEvent 就会被回调
在源码就这样子

public boolean dispatchTouchEvent(MotionEvent ev){
    boolean consume =false;
    if (onInterceptTouchEvent(ev)){
       consume =  onTouchEvent(ev);
    } else {
        consume = child.dispatchTouchEvent(ev)
    }
    return consume;
}

View需要处理事件呢

  1. 是否注册setOnTouchListener
  2. onTouch=false
  3. onTouchEvent √ 是否注册OnClickListener (enable)

按照步骤,一步一步来,都是前置条件

标签:onTouchEvent,consume,dispatchTouchEvent,onInterceptTouchEvent,传递,机制,ev,View
来源: https://blog.csdn.net/Jack_King007/article/details/88058703