说是重写,其实是对Android该部分源码进行大幅精简而不失要点,且能够独立运行,以一窥其全貌,而不陷入到源码繁杂的细节中。以下类均为自定义类,而非Android同名原生类。MotionEvent首先定义MotionEvent,这里将触摸事件action减少为最常用的4种,同时只支持单指操作,因此action取值仅支持4个常量。表示如果ACTION_DOWN没有视图消费,则之后的事件将被拦截,且拦截的View是View树中的顶层View,即Android中的DecorView。此时会调用dispatchTransformedTouchEvent中处向子View分发ACTION_DOWN,child即mFirstTouchTarget。分发除ACTION_DOWN外的其他事件对于ACTION_DOWN事件,会将alreadyDispatchedToNewTouchTarget置位,此时会会进入if块,而非ACTION_DOWN事件会进入else块。使用至此,实现了MotionEvent,View,与ViewGroup,来进行一下验证。

如何自己实现Android View Touch事件分发流程

如何自己实现Android View Touch事件分发流程

如何自己实现Android View Touch事件分发流程

如何自己实现Android View Touch事件分发流程

如何自己实现Android View Touch事件分发流程

如何自己实现Android View Touch事件分发流程

如何自己实现Android View Touch事件分发流程