android 学习之触摸事件 -- 事件派发
来源:互联网 发布:福州seo短期培训 编辑:程序博客网 时间:2024/06/05 13:35
一、android 事件派发流程
1. ViewGrop派发
dispatchTouchEvent --> onInterceptTouchEvent - -> onTouchEvent
2. VIew
dispatchTouchEvent --> onTouchEvent
3. Activity (本质上也是ViewGroup)
dispatchTouchEvent --> onTouchEvent
二、详细派发过程
1. 安卓设备收到第一个down事件后首先通过dispatchTouchEvent, 再通过onInterceptTouchEvent ,如果中间一直
没有拦截,并且当前view是ViewGrop则事件继续以 dispatchTouchEvent ->onInterceptEvent流程派发下去,直到遇到View(包含子view的view),此时执行该view中的onTouchEvent方法, 如果当前子View没有在onTouchEvent中消费,则事件向上传递给它的父View的onTouchEvent, 如果该父View,也没有消费,则事件继续以相同方式向上传递,直到根View,也即是Activity。此后的事件(move和up等)事件将不会向下传递, 只会在Activity里传递消费。整个过程类似先下沉后冒泡的过程。
2. 如果最后子View在onTouchEvent中消费了down事件,则不会继续向上传递给父onTouchEvent, 此后事件都会传
递到该子View中。
3. 如果在父view中在onInterceptTouchEvent拦截了事件,则此后事件不会传递到子view中。
4. 子view可以通过getParent().requestDisallowInterceptTouchEvent(true);告诉父view,不要拦截我的事件
三、demo验证
demo效果图,通过上面的checkbox控制他们的消费和拦截来验证上面的派发流程
3个view,分别是,rootview, mygropview,childview 和一个Activity
rootview是哪个灰色部分
mygroupview是青绿色部分
childview是清蓝色
附上Demo代码地址 http://download.csdn.net/detail/ldoujintianhei/9379121
- android 学习之触摸事件 -- 事件派发
- Android触摸事件派发机制源码分析之View
- Android触摸事件派发机制源码分析之ViewGroup
- Android触摸事件派发机制源码分析之Activity
- android 学习之触摸事件 -- 认识MotionEvent
- Android 事件派发流程图
- android key 事件派发
- 控件树的触摸事件派发小结
- android 事件派发的流程
- android 事件派发流程详解
- 派发事件
- Android触摸事件派发机制详解与源码分析二(ViewGroup篇)
- Android触摸事件派发机制详解与源码分析三(Activity篇)
- Android 触摸消息派发之ViewGroup的派发过程
- Android 自定义View 之 触摸消息派发
- cocos2d-x v3.2 触摸事件派发机制
- ios事件之触摸事件
- ViewGroup学习之触摸事件分发
- Linux安装Redis
- javascript冒泡排序
- 嵌入式audio基础(五)性能指标补遗
- 计算机学院大学生程序设计竞赛(2015’12)The Country List
- iOS 从相册加载图片到imageview
- android 学习之触摸事件 -- 事件派发
- 如何利用matlab爬虫抓数据
- 编程语言特性总结
- 软件定义和硬件重构知多少(三)
- UNITY 位移
- freetype2 编译
- 【GLSL教程】(八)纹理贴图
- 【重走普及路】【dfs】八皇后(USACO)
- Ubuntu 网络管理器显示“设备未托管”的解决办法