美文网首页
dispatchTouchEvent()的分发机制源码分析

dispatchTouchEvent()的分发机制源码分析

作者: ae12 | 来源:发表于2018-11-14 19:33 被阅读1次

    view事件分发的流程是 Activtiy -Window -View
    disapatchEventTouch(){}
    看的 sdk不一致,但是大概原理都差不多。
    public boolean dispatchTouchEvent(MotionEvent event) {
    if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
    mOnTouchListener.onTouch(this, event)) {
    return true;
    }
    return onTouchEvent(event);

    setOntouchListener() && view clickable && onTouch() return ture ,则直接返回true;否则就执行 onTouchEvent();
    返回true代表事件消费了,不会再继续往下传了。

    由于onTouch()返回true,onClick()不再执行,则说明,onClick()in onTouchEvent()里;

    onTouchEvent()从ACTION_UP执行进入case语句,然后performClick();

    performClick():

    public boolean performClick() {
    sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
    if (mOnClickListener != null) {
    playSoundEffect(SoundEffectConstants.CLICK);
    mOnClickListener.onClick(this);
    return true;
    }
    return false;


    当我们view .setOnclickListener()时候,我们的mOnClickListener就被赋值了。
    所以,就会回调onClick()事件。

    相关文章

      网友评论

          本文标题:dispatchTouchEvent()的分发机制源码分析

          本文链接:https://www.haomeiwen.com/subject/jceqfqtx.html