android(八)、view触摸事件

来源:互联网 发布:高博软件技术学院 编辑:程序博客网 时间:2024/06/05 04:16

本文章基于android 4.2.1,从view拿到事件信息开始,首先对事件做一些检测及预处理;如果事件有问题的话则抛弃信息,否则的话开始对事件进行分析。

首先判断mListenerInfo是否为空,是否设置了onTouch事件;如果设置了事件则执行onTouch事件,当onTouch方法消耗了事件则消息传递结束;否则将事件交给OnTouchEvent方法处理,onTouchEvent中主要是判断是执行点击事件还是长按事件,如果没有消耗掉事件的话事件抛给父控件或者结束事件(无父控件时结束事件)。

7226     public boolean dispatchTouchEvent(MotionEvent event) {7227         if (mInputEventConsistencyVerifier != null) {7228             mInputEventConsistencyVerifier.onTouchEvent(event, 0);7229         }7230 7231         if (onFilterTouchEventForSecurity(event)) {7232             //noinspection SimplifiableIfStatement7233             ListenerInfo li = mListenerInfo;7234             if (li != null && li.mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED7235                     && li.mOnTouchListener.onTouch(this, event)) {7236                 return true;7237             }7238 7239             if (onTouchEvent(event)) {7240                 return true;7241             }7242         }7243 7244         if (mInputEventConsistencyVerifier != null) {7245             mInputEventConsistencyVerifier.onUnhandledEvent(event, 0);7246         }7247         return false;7248     }


原创粉丝点击