新东西005--Android View的事件传递
来源:互联网 发布:做淘宝的经验 编辑:程序博客网 时间:2024/06/07 06:42
实现:其实我只是想实现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事件分发机制完全解析到此全部结束,结合上下两篇,相信大家对事件分发的理解已经非常深刻了。
- 新东西005--Android View的事件传递
- Android的View 事件传递
- Android View 事件传递
- android View事件传递
- Android事件传递(一View事件的传递)
- android View 的ontouch事件传递过程
- android平级View之前的事件传递
- Android ViewGroup和View的传递事件
- android...View的点击事件传递详解,
- Android View的事件传递笔记
- View的事件传递
- view的事件传递
- View的事件传递
- View事件的传递
- Android View事件分发机制--点击事件的传递规则
- Android View 事件传递机制
- Android View事件传递机制
- android view 原理 -- 事件传递
- 迅为iTOP-4412开发板在 Ubuntu 下使用WIFI
- linux 多线程问题——GDB调试_等问题
- ICCV2013、CVPR2013、ECCV2013目标检测相关论文
- 每天三道冲刺工作--根据上排给出十个数,在其下排填出对应的十个数
- AE(After Effect) 自带抠像插件详解
- 新东西005--Android View的事件传递
- 新闻发布系统,B/S模式下的三层应用
- dw 下拉菜单
- linux 网络配置文件说明
- MYSQL连接数过多问题修正
- Appium源码分析(7)-status模块
- SQL Server 用触发器实现库存的先进先出(有退货)
- 当PLSQL 无法连接到oracle数据库时,肿么办?
- Oracle 11g+VSS+VS2005+PLSQL+orcle客户端安装