View 点击事件传递机制

伪代码解释事件传递过程:

    public boolean dispatchTouchEvent(MotionEvent ev) {
        boolean consume = false;//事件是否被消费
        if (onInterceptTouchEvent(ev)){//调用onInterceptTouchEvent判断是否拦截事件
            consume = onTouchEvent(ev);//如果拦截则调用自身的onTouchEvent方法
        }else{
            consume = child.dispatchTouchEvent(ev);//不拦截调用子View的dispatchTouchEvent方法
        }
        return consume;//返回值表示事件是否被消费,true事件终止,false调用父View的onTouchEvent方法
    }

 

 关键方法:

dispatchTouchEvent:处理时一定会调用的方法
onInterceptTouchEvent:是否拦截;如果第一次move拦截了,那之后不会再调用该方法了,直到下一次的触摸
onTouchEvent:真正处理该view触摸事件的方法




posted on 2019-08-13 16:28  赵子隆  阅读(421)  评论(0编辑  收藏  举报

导航