View的事件分发机制要分析的对象就是MoveEvent, 即点击事件,所谓点击事件的分发其实就是对MoveEvent事件的分发过程,点击事件的分发主要靠如下三个函数来完成: dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()。
dispatchTouchEvent主要负责分发消息,一般消息的分发从activity的dispatchTouchEvent开始
onInterceptTouchEvent是ViewGroup里独有的方法,默认返回false,返回true表示拦截。
onTouchEvent处理事件的方法,返回true表示消息该事件,返回false表示不消费该事件。
activity里有两个回调:
public boolean dispatchTouchEvent(MotionEvent ev);
public boolean onTouchEvent(MotionEvent ev);
VIewGroup里有三个回调
public boolean dispatchTouchEvent(MotionEvent ev);
public boolean onInterceptTouchEvent(MotionEvent ev);
public boolean onTouchEvent(MotionEvent ev);
View里有两个回调
public boolean dispatchTouchEvent(MotionEvent ev);
public boolean onTouchEvent(MotionEvent ev);
Android中默认情况下事件传递是由最终的view的接收到,传递过程是从父布局到子布局,也就是从Activity到ViewGroup到View的过程,默认情况,ViewGroup起到的是透传作用。Android中事件传递过程(按箭头方向)如下图,
image.png
引自: http://blog.csdn.net/xyz_lmn/article/details/12517911
https://www.jianshu.com/p/35a8309b9597
https://www.jianshu.com/p/66a80ff0133b?https://www.jianshu.com/p/66a80ff0133b?
https://www.jianshu.com/p/66a80ff0133b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
网友评论