Android 触摸事件处理流程

在Android中,所谓消费了一个touch事件均以返回值的真假来确定。true = 已消费;false = 未消费

Activity.dispatchTouchEvent

dispatchTouchEvent()的处理流程代码:

public boolean dispatchTouchEvent(MotionEvent ev) {
    if(!onInterceptTouchEvent()){
        for(View child : children){
            if(child.dispatchTouchEvent(ev))
                return true;
        }
    }
    return super.dispatchTouchEvent(ev);
}

ViewGroup.onInterceptTouchEvent一个完整的touch事件是指从ACTION_DOWN到ACTION_UP/ACTION_CANCEL,之间可能包括许多ACTION_MOVE。其中ACTION_DOWN是一个开始事件也是最重要的一个事件,是否处理ACTION_DOWN会直接影响到其是否能接受到后续事件。

View.onTouchEvent

Alt none Alt none Alt none

ref: Google Android Doc ref: Youbube