新东西005--Android View的事件传递
2015-05-04 15:26
69 查看
实现:其实我只是想实现listview的headview放一个scrollView,然后它可以单独滑动,也可以被listview往上推
需知:
1.View跟ViewGroup的区别在于,ViewGroup可以包含多个view,而且可以含有一些布局属性
2.OnClick的调用是在onTouch方法中
(http://blog.csdn.net/guolin_blog/article/details/9097463这个链接里面有完整的onTouch源码解析,也有分析,可以参考一下)
方法详述(都在onTouch方法里面系统调用):
dispatchTouchEvent:分发点击事件,比如你触摸了该控件,系统就会去看dispathTouchEvent,根据这个返回值来判断是否要向下分发该事件(你可以重写该方法来决定是否向下传递触摸事件,比如实现listview的该方法,返回true,那么下面的就能获取焦点)
onInterceptTouchEvent:是否阻止事件传递,如果返回True则由自己处理,不再向下传递
OK,知道完了这两个前提,我们就开始正文,介绍我们的模拟点击
首先如果有个button,你点击了,那么它首先就会去调用触摸onTouch方法,而不是onClick,因为很明显的在需知里面说了,onClick是在onTouch里面实现的,然后系统会调用控件的dispatchTouchEvent方法(),根据返回值来判断是否要向下传递该触摸事件,在调用这个方法的时候,我们可以查看源码,我们会发现,它在dispatchTouchEvent方法内部调用了onInterceptTouchEvent方法.
系统默认的规则是:
1.Android事件分发是先传递到ViewGroup,再由ViewGroup传递到View的。
2. 在ViewGroup中可以通过onInterceptTouchEvent方法对事件传递进行拦截,onInterceptTouchEvent方法返回true代表不允许事件继续向子View传递,返回false代表不对事件进行拦截,默认返回false。
3. 子View中如果将传递的事件消费掉,ViewGroup中将无法接收到任何事件。
好了,Android事件分发机制完全解析到此全部结束,结合上下两篇,相信大家对事件分发的理解已经非常深刻了。
需知:
1.View跟ViewGroup的区别在于,ViewGroup可以包含多个view,而且可以含有一些布局属性
2.OnClick的调用是在onTouch方法中
(http://blog.csdn.net/guolin_blog/article/details/9097463这个链接里面有完整的onTouch源码解析,也有分析,可以参考一下)
方法详述(都在onTouch方法里面系统调用):
dispatchTouchEvent:分发点击事件,比如你触摸了该控件,系统就会去看dispathTouchEvent,根据这个返回值来判断是否要向下分发该事件(你可以重写该方法来决定是否向下传递触摸事件,比如实现listview的该方法,返回true,那么下面的就能获取焦点)
onInterceptTouchEvent:是否阻止事件传递,如果返回True则由自己处理,不再向下传递
OK,知道完了这两个前提,我们就开始正文,介绍我们的模拟点击
首先如果有个button,你点击了,那么它首先就会去调用触摸onTouch方法,而不是onClick,因为很明显的在需知里面说了,onClick是在onTouch里面实现的,然后系统会调用控件的dispatchTouchEvent方法(),根据返回值来判断是否要向下传递该触摸事件,在调用这个方法的时候,我们可以查看源码,我们会发现,它在dispatchTouchEvent方法内部调用了onInterceptTouchEvent方法.
系统默认的规则是:
1.Android事件分发是先传递到ViewGroup,再由ViewGroup传递到View的。
2. 在ViewGroup中可以通过onInterceptTouchEvent方法对事件传递进行拦截,onInterceptTouchEvent方法返回true代表不允许事件继续向子View传递,返回false代表不对事件进行拦截,默认返回false。
3. 子View中如果将传递的事件消费掉,ViewGroup中将无法接收到任何事件。
好了,Android事件分发机制完全解析到此全部结束,结合上下两篇,相信大家对事件分发的理解已经非常深刻了。
相关文章推荐
- 【Android View】Android中View对触摸事件的处理和传递dispatchTouchEvent、onInterceptTouchEvent
- Android 的事件分发机制(二)---ViewGroup的事件传递
- Android进阶二十二 View事件的传递过程
- Android View的事件传递《1》
- android平级View之前的事件传递
- Android事件传递(一View事件的传递)
- Android Touch事件传递机制全面解析(从WMS到View树)
- Android ViewGroup中事件触发和传递机制
- 转:Android view事件传递机制
- Android ViewGroup中事件触发和传递机制
- Android ViewGroup中事件触发和传递机制
- Android 的事件分发机制(一)---view的事件传递
- Android View触摸事件传递机制
- Android Activity 和 ViewGroup中事件触发和传递机制
- Android View 触摸事件传递机制
- Android ViewGroup的事件分发和传递解析
- Android Activity 和 ViewGroup中事件触发和传递机制
- Android View事件传递机制
- Android ViewGroup中事件触发和传递机制
- Android View 事件传递