安卓触摸事件探究
来源:互联网 发布:中华姓氏家谱编辑软件 编辑:程序博客网 时间:2024/05/24 01:39
参考,http://blog.csdn.net/chunqiuwei/article/details/41084921
/** * 第一步,dispatchTouchEvent, * false:结束 * true:到onInterceptTouchEvent * 第二步:到onInterceptTouchEvent, * true:到viewGroup的onTouchEvent * false:到View dispatchTouchEvent * 第三步:View dispatchTouchEvent * 第四步:View onTouchEvent * true:view消费touch事件,viewGroup不能消费 * false:viewGroup决定是否消费touch事件 * * * @param ev * @return */
例子原型
MyLinearLayout包含一个MyView
情况一,
MyLinearLayout, dispatchTouchEvent返回false onInterceptTouchEvent返回false onTouchEvent返回falseMyView dispatchTouchEvent返回false onTouchEvent返回false
结果
03-18 15:26:00.726 6884-6884/com.example.myapp D/zyr﹕ A DIS ACTION_DOWN03-18 15:26:00.726 6884-6884/com.example.myapp D/zyr﹕ A INT ACTION_DOWN03-18 15:26:00.726 6884-6884/com.example.myapp E/zyr﹕ B DIS ACTION_DOWN03-18 15:26:00.726 6884-6884/com.example.myapp E/zyr﹕ B TOU ACTION_DOWN03-18 15:26:00.726 6884-6884/com.example.myapp D/zyr﹕ A TOU ACTION_DOWN03-18 15:26:05.396 6884-6884/com.example.myapp D/zyr﹕ A DIS ACTION_DOWN03-18 15:26:05.396 6884-6884/com.example.myapp D/zyr﹕ A INT ACTION_DOWN03-18 15:26:05.396 6884-6884/com.example.myapp E/zyr﹕ B DIS ACTION_DOWN03-18 15:26:05.396 6884-6884/com.example.myapp E/zyr﹕ B TOU ACTION_DOWN03-18 15:26:05.396 6884-6884/com.example.myapp D/zyr﹕ A TOU ACTION_DOWN
结论
由图,没有view消费本次触摸事件,Action_Move事件根本传递不进来
情况二,
MyLinearLayout, dispatchTouchEvent返回false onInterceptTouchEvent返回false onTouchEvent返回falseMyView dispatchTouchEvent返回false onTouchEvent返回true
结果
03-18 15:36:33.641 10292-10292/com.example.myapp D/zyr﹕ A DIS ACTION_DOWN03-18 15:36:33.641 10292-10292/com.example.myapp D/zyr﹕ A INT ACTION_DOWN03-18 15:36:33.641 10292-10292/com.example.myapp E/zyr﹕ B DIS ACTION_DOWN03-18 15:36:33.641 10292-10292/com.example.myapp E/zyr﹕ B TOU ACTION_DOWN03-18 15:36:33.676 10292-10292/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:36:33.676 10292-10292/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:36:33.676 10292-10292/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:36:33.676 10292-10292/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:36:33.691 10292-10292/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:36:33.691 10292-10292/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:36:33.691 10292-10292/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:36:33.691 10292-10292/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:36:33.711 10292-10292/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:36:33.711 10292-10292/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:36:33.711 10292-10292/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:36:33.711 10292-10292/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:36:33.721 10292-10292/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:36:33.721 10292-10292/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:36:33.721 10292-10292/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:36:33.721 10292-10292/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:36:33.721 10292-10292/com.example.myapp D/zyr﹕ A DIS ACTION_UP03-18 15:36:33.721 10292-10292/com.example.myapp D/zyr﹕ A INT ACTION_UP03-18 15:36:33.721 10292-10292/com.example.myapp E/zyr﹕ B DIS ACTION_UP03-18 15:36:33.721 10292-10292/com.example.myapp E/zyr﹕ B TOU ACTION_UP
结论
MyView消费ACTION_DOWN,之后ACTION_MOVE传递进来,消费ACTION_MOVE,ACTION_UP同理
情况三,
MyLinearLayout, dispatchTouchEvent返回false onInterceptTouchEvent返回false onTouchEvent返回trueMyView dispatchTouchEvent返回false onTouchEvent返回true
结果
03-18 15:40:18.056 29163-29163/com.example.myapp D/zyr﹕ A DIS ACTION_DOWN03-18 15:40:18.056 29163-29163/com.example.myapp D/zyr﹕ A INT ACTION_DOWN03-18 15:40:18.056 29163-29163/com.example.myapp E/zyr﹕ B DIS ACTION_DOWN03-18 15:40:18.056 29163-29163/com.example.myapp E/zyr﹕ B TOU ACTION_DOWN03-18 15:40:18.076 29163-29163/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:40:18.076 29163-29163/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:40:18.076 29163-29163/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:40:18.076 29163-29163/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:40:18.096 29163-29163/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:40:18.096 29163-29163/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:40:18.096 29163-29163/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:40:18.096 29163-29163/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:40:18.111 29163-29163/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:40:18.111 29163-29163/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:40:18.111 29163-29163/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:40:18.111 29163-29163/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:40:18.126 29163-29163/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 15:40:18.126 29163-29163/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 15:40:18.126 29163-29163/com.example.myapp E/zyr﹕ B DIS ACTION_MOVE03-18 15:40:18.126 29163-29163/com.example.myapp E/zyr﹕ B TOU ACTION_MOVE03-18 15:40:18.131 29163-29163/com.example.myapp D/zyr﹕ A DIS ACTION_UP03-18 15:40:18.131 29163-29163/com.example.myapp D/zyr﹕ A INT ACTION_UP03-18 15:40:18.131 29163-29163/com.example.myapp E/zyr﹕ B DIS ACTION_UP03-18 15:40:18.131 29163-29163/com.example.myapp E/zyr﹕ B TOU ACTION_UP
结论
虽然MyLinearLayout的onTouch返回true,但是MyTouch也是返回true,由于安卓触摸事件传递是由上而下,但是消费触摸事件是由下而上的,所以处于下面的MyView消费掉了触摸事件,MyLinearLayout无法消费
情况四,
研究onInterceptTouchEvent
MyLinearLayout, dispatchTouchEvent返回false onInterceptTouchEvent返回true onTouchEvent返回falseMyView dispatchTouchEvent返回false onTouchEvent返回true
结果
03-18 15:44:37.701 20477-20477/com.example.myapp D/zyr﹕ A DIS ACTION_DOWN03-18 15:44:37.701 20477-20477/com.example.myapp D/zyr﹕ A INT ACTION_DOWN03-18 15:44:37.701 20477-20477/com.example.myapp D/zyr﹕ A TOU ACTION_DOWN
结论
虽然MyView的onTouch返回true,但是被MyLinearLayout拦截下来了(MyLinearLayout的onInterceptTouchEvent返回true),但是MyLinearLayout的onTouch返回false,即它并没有消费此次触摸事件,so,,,此次触摸事件就此结束,当然Action_Move是没有机会传递拉.
情况五,
MyLinearLayout, dispatchTouchEvent返回false onInterceptTouchEvent ACTION_DOWN,false ACTION_MOVE,true ACTION_UP,false onTouchEvent ACTION_DOWN,false ACTION_MOVE,true ACTION_UP,falseMyView dispatchTouchEvent返回false onTouchEvent返回true
结果
03-18 16:09:36.241 8257-8257/com.example.myapp D/zyr﹕ A DIS ACTION_DOWN03-18 16:09:36.241 8257-8257/com.example.myapp D/zyr﹕ A INT ACTION_DOWN03-18 16:09:36.241 8257-8257/com.example.myapp E/zyr﹕ B DIS ACTION_DOWN03-18 16:09:36.241 8257-8257/com.example.myapp E/zyr﹕ B TOU ACTION_DOWN03-18 16:09:36.271 8257-8257/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 16:09:36.271 8257-8257/com.example.myapp D/zyr﹕ A INT ACTION_MOVE03-18 16:09:36.296 8257-8257/com.example.myapp D/zyr﹕ A DIS ACTION_MOVE03-18 16:09:36.296 8257-8257/com.example.myapp D/zyr﹕ A TOU ACTION_MOVE03-18 16:09:36.296 8257-8257/com.example.myapp D/zyr﹕ A DIS ACTION_UP03-18 16:09:36.296 8257-8257/com.example.myapp D/zyr﹕ A TOU ACTION_UP
结论
MyLinearLayout, dispatchTouchEvent返回false onInterceptTouchEvent ACTION_DOWN,false ACTION_MOVE,false ACTION_UP,false onTouchEvent ACTION_DOWN,true ACTION_MOVE,true ACTION_UP,trueMyView dispatchTouchEvent返回false onTouchEvent返回true
03-28 16:00:01.036 628-628/com.example.myapp D/zyr﹕ A DIS ACTION_DOWN03-28 16:00:01.036 628-628/com.example.myapp D/zyr﹕ A INT ACTION_DOWN03-28 16:00:01.036 628-628/com.example.myapp D/zyrr﹕ isInRange:true03-28 16:00:01.036 628-628/com.example.myapp E/zyr﹕ B DIS ACTION_DOWN03-28 16:00:01.036 628-628/com.example.myapp E/zyr﹕ B TOU ACTION_DOWN03-28 16:00:01.046 628-628/com.example.myapp D/zyr﹕ A DIS ACTION_UP03-28 16:00:01.046 628-628/com.example.myapp D/zyr﹕ A INT ACTION_UP03-28 16:00:01.051 628-628/com.example.myapp E/zyr﹕ B DIS ACTION_UP03-28 16:00:01.051 628-628/com.example.myapp E/zyr﹕ B TOU ACTION_UP
0 0
- 安卓触摸事件探究
- 安卓触摸事件集锦
- 安卓触摸事件剖析
- UIView 触摸事件探究
- ViewGroup触摸事件探究
- 安卓触摸事件传递机制
- 安卓触摸事件分发经验总结
- 安卓事件传递机制探究
- 安卓触摸事件处理机制的简单介绍
- 图解安卓触摸事件的分发机制
- 【android学习】安卓设备实现触摸事件的监听,跨进程事件注入
- 安卓触摸事件与点击事件的区别(Touch&Click)
- cocos2d-x触摸事件优先级的探究与实践
- cocos2d-x触摸事件优先级的探究与实践
- cocos2d-x触摸事件优先级的探究与实践
- cocos2d-x触摸事件优先级的探究与实践
- Cocos2d-x:触摸事件优先级的探究与实践
- 安卓手机触摸画线
- BZOJ 1194: [HNOI2006]潘多拉的盒子
- 【字符串处理算法】获取最长公共子串的算法设计及C代码实现
- <php>学习小记-20160322
- 数字签名与数字证书
- Jena读取Ontology本体到Mysql数据库
- 安卓触摸事件探究
- [PHP代码] php模拟post发送数据
- Android开发之assets目录下资源使用总结
- android关于canvas,path,paint非常好的讲解
- neo4j with 统计
- [LeetCode] Reverse Words in a String II(in-place 算法)
- [PHP代码] PHP四舍五入 保留几位小数 格式化数字
- CSDN-markdown语法之如何使用LaTeX语法编写数学公式
- hdoj1013