您的位置:首页 > 移动开发 > Android开发

android 事件的传递与消费

2016-08-04 16:15 127 查看

一,弄清楚onTouch,onClick,onLongClick的关系

onTouch、onClick和onLongClick等都是android中事件的表现形式,而根据体的说就是一个事件的发生首先有onTouch接收,执行action_down,action_move和action_up等,而onclick和onLongclick都是在action_down 发生后,根据判定条件,最后决定是否触发事件,想详细了解,可以去看看这篇博文


http://blog.csdn.net/hufeng882412/article/details/7310142

二,事件的传递和消费过程

首先是事件的捕获,事件产生后,有最外层的view捕获,也就是activity的最外一层view捕获,然后沿着节点,依次向内层view传递;
而事件的消费则刚好相反,在不考虑拦截的情况下,事件传到最内层view后,由其开始消费,根据消费结果,决定是否在向上传递,直到最内层,


想详细了解,学习这篇博文

http://www.cnblogs.com/lwbqqyumidi/p/3500997.html

三,事件拦截

public boolean onInterceptTouchEvent(MotionEvent ev) ,很多人对这个方法估计眼熟,不错它就是实现事件拦截的方法,我们的view都继承了这个方法,根据它返回的结果,系统决定事件是否继续传递,如果 onInterceptTouchEvent 返回 true,则表示将事件进行拦截,并将拦截到的事件交由本层控件 的 onTouchEvent 进行处理;


如果返回结果是false;则表示不对事件进行拦截,事件得以成功分发到子View。并由子View的dispatchTouchEvent进行处理。

如果返回super.onInterceptTouchEvent(ev),事件默认不会被拦截,交由子View的dispatchTouchEvent进行处理。

以上都是个人学习时的一些总结,如有错误,请大家指正,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: