android 事件分发机制
源码解析起来太麻烦,简要总结一下
实现分发的顺序Activity -> ViewGroup -> View。
android事件分发机制中有下面三个重要方法:
dispatchTouchEvent()
onInterceptTouchEvent()
onTouchEvent()
总结:
整个事件分发过程可看成一段起点一定而终点未定的旅行。这段旅行从activity出发,终止于未知。
1.事件是从父布局向子布局传递,层层递进。
接收到事件先由dispatchTouchEvent()处理。在dispatchTouchEvent()中,当onInterceptTouchEvent()为true时,事件被拦截,调用onTouchEvent()方法;为false时调用子View的dispatchTouchEvent方法。
2.dispatchTouchEvent() 和 onTouchEvent() 返回false的时,父布局的onTouchEvent会被调用。
此时,可理解为事件从子布局向着父布局传递,层层递进。
3.dispatchTouchEvent() 和 onTouchEvent 返回 true,事件就停止传递。