View的事件处理机制

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

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容