面试要点:事件分发机制

我想说的是 view 的 dispatchTouchEvent 这段源码一定要记住,不难.

阻断与.先判断有无OnTouchListener,然后判断是否可点击,然后判断onTouch事件返回值

public boolean dispatchTouchEvent(MotionEvent event) {
    if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
            mOnTouchListener.onTouch(this, event)) {
        return true;
    }
    return onTouchEvent(event);
}


然后是viewGroup这段源码:

disallowIntercept 为子控件设置值,默认为false 可以防止父控件拦截掉子控件的消息.

onInterceptTouchEvent 默认为false 不拦截

if (disallowIntercept || !onInterceptTouchEvent(ev)) {

    child.dispatchTouchEvent(ev);

}

面试时 一问事件分发,直接给他讲源码.蹭蹭加分.
---------------------
作者:a31081314
来源:CSDN
原文:https://blog.csdn.net/a31081314/article/details/81666606
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-05-25 18:32  天涯海角路  阅读(217)  评论(0)    收藏  举报