Android 事件分发

2017-05-15  本文已影响19人  trry_ing

Android基础

首先来看一张图,来自Kelin 图解 Android 事件分发机制,觉得写得非常不错,大家可以去看下。

事件分发详细图解

图中把事件分发描绘的非常详细,仔细认真看多几次,可以加深印象。
上图认为 dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent的返回值有三个,return true;return falsereturn super.xxx()

1、View 和 ViewGroup 的区别

View事件分发相关方法:

ViewGroup事件分发相关方法:

可以看出ViewGroup比View多出了个Intercept拦截的方法,如果ViewGroup要处理消耗触摸事件,就要通过拦截来把事件给指派给自己。

2、dispatchTouchEvent

3、onIntercepTouchEvent

该方法只有ViewGroup有,在ViewGroup中调用父类 dispatchTouchEvent() 会去查看是否需要拦截事件。
return true表明自己要消耗该事件。
return false表明自己不需要该事件,事件继续传递。

4、onTouchEvent

以上的分析仅在 MotionEvent.ACTION_DOWN事件内分析,其实 MotionEvent.ACTION_MOVEMotionEvent.ACTION_UP的事件一样,只不过都是传递到这里就往上回归了

上一篇下一篇

猜你喜欢

热点阅读