天天看点

安卓学习5

今天学习了安卓的一些知识其中主要的是:

事件分发

dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent

步骤 1:判断当前 ViewGroup 是否需要拦截此 touch 事件,如果拦截则此次 touch 事件不再会传递给子 View

(或者以 CANCEL 的方式通知子 View)。

步骤 2:如果没有拦截,则将事件分发给子 View 继续处理,如果子 View 将此次事件捕获,

则将 mFirstTouchTarget 赋值给捕获 touch 事件的 View。

如果没有子 View 捕获处理 touch 事件,ViewGroup 会通过自身的 onTouchEvent 方法进行处理。

后续的 MOVE、UP 等事件的分发交给谁,取决于它们的起始事件 Down 是由谁捕获的。

步骤 3:根据 mFirstTouchTarget 重新分发事件。

判断是否需要拦截:主要是根据onInterceptTouchEvent方法的返回值决定是否拦截

在Down事件中将touch事件分发给子View: 如果子view捕获消费了touch事件,会对mFirstTouchTarget进行赋值

最后,Down, Move,Up事件会根据mFirstTouchTarget是否为null,决定自己处理touch事件,还是再次分发给子View

特殊点:

Down事件特殊之处: 事件的起点;决定后续事件由谁来消费处理