Android事件传递机制

Activity、ViewGroup、View 三者的事件传递机制。

一次完成事件传递主要包含三个阶段,分发、传递、消费。

触摸事件包括三个类型

ACTION_DOWN 

ACTION_MOVE

ACTION_UP

分别代表用户触摸屏幕时候的三个动作,由MotionEvent类负责管理。

第一阶段 分发

dispatchTouchEvent()  该方法返回true 表示当前视图消费,不再进行分发,如果返回值为 super.dispatchTouchEvent() 则表示继续分发。

如果当前视图时ViewGroup 及其子类,则会调用 onInterceptTouchEvent()方法判断是否拦截次事件。

第二阶段 拦截

onInterceptTouchEvent() 该方法返回true 表示拦截该事件,不继续分发给子视图,同时交给自身的onTouchEvent()方法进行消费。

返回false或者super.onInterceptTouchEvent()则表示不拦截该事件,继续传给子视图

第三阶段 消费

onTouchEvent() 该方法返回true 表示该事件由当前视图处理,事件将不再交还给父视图的onTouchEvent方法处理。

Android 系统中有事件处理能力的有三个

Activity:拥有dispatchTouchEvent()和 onTouchEvent()

ViewGroup:拥有dispatchTouchEvent() 、onInterceptTouchEvent()、onTouchEvent()

View:拥有dispatchTouchEvent()、onTouchEvent()方法

你可能感兴趣的:(Android事件传递机制)