android View touch的传递流程
来源:互联网 发布:数据采集器的作用 编辑:程序博客网 时间:2024/04/28 11:36
1. ViewRootImpl :deliverPointerEvent()
2. PhoneWindow$DecorView :dispatchTouchEvent()
3. Activity :dispatchTouchEvent()
4. PhoneWindow :superDispatchTouchEvent()
5. PhoneWindow$DecorView :superDispatchTouchEvent()
6. ViewGroup :dispatchTouchEvent()
7.ViewGroup :dispatchTransformedTouchEvent()
8. ViewGroup :dispatchTouchEvent()
-> a.如果该层view容器没有事件拦截 :onInterceptTouchEvent() == false 走下面拦截的逻辑@no_intercept
-> b.如果该层view容器有事件拦截 :onInterceptTouchEvent() == true 走下面拦截的逻辑@intercept
==================================@no_intercept ========================================
9. 延续第7 ~ 8步,遍历传递。
10. View :dispatchTouchEvent()
11. View :onTouchEvent()
====================================@intercept =========================================
9. 容器view :onInterceptTouchEvent()
10. ViewGroup :dispatchTransformedTouchEvent()
11. View :dispatchTouchEvent()
12. View :onTouchEvent()
三个方法在view视图被touch的情况下:
dispatchTouchEvent()调用的时机:整个view体系保持通路的情况下,每次都调用。 有一层view dispatchTouchEvent返回false,短路。则之后整个view体系不会再调用此方法。
onInterceptTouchEvent()调用时机:整个view体系保持通路的情况下,action_down时,mFirstTouchTarget != null 时。返回true拦截了mFirstTouchTarget 会置空,则之后再也不会调用此方法。
onTouchEvent()调用时机:
整个view体系保持通路的情况下,view类总会被调用。
viewGroup容器类:a. 如果子View onTouch()返回false没处理(mFirstTouchTarget 没赋值==null),会调用本层的onTouch();
b. 本层拦截了事件(mFirstTouchTarget 没赋值==null)。会调用本层的onTouch();
注:
dispatchTouchEvent 返回false,则系统下次不会再调用此方法。没有传递成功,则系统认为此事件无需再处理了。
什么情况下 返回false:
1. 有targetView(有childView在点中区域), targetView dispatchTouchEvent() / onTouchEvent() 返回 false;
2. 无targetView(无childView在点中区域,或根本无childView), 当前view onTouchEvent() 返回 false; (是否clickable ,long_clickable)
- android View touch的传递流程
- Android touch事件传递及View的绘制流程
- Android Touch事件传递流程
- Android中view的Touch事件传递顺序
- 深入探索Android 中view的touch事件传递
- Android View touch事件传递方式规律
- Android View Touch事件传递机制
- android View System touch 事件分发流程
- View的Touch事件分发流程
- View的Touch事件分发简要流程
- Android Touch的传递机制
- Android Touch事件在View层级结构中的传递机制
- Android 之在View以及ViewGroup中Touch事件传递
- android View draw方法传递流程
- android View 绘制流程 和 事件传递
- Android 4.4.3 应用层 Touch事件传递流程
- Android Touch事件传递的一些总结
- Android Touch传递的一些简单规则
- nm、ar、ldd、ldconfig和ld.so(Linux下的库操作工具) (2006-12-24 21:58:53)
- Javascript定义对象
- mysql索引的效率问题
- Hadoop 0.20.2 在mac os 10.9 环境下 pseudo distributed 配置
- ios-cocos2d-x- 固定横/竖屏最简单办法
- android View touch的传递流程
- windows和Linux网络编程真正的基础:发包。 c语言代码整理归纳
- cs
- 有限状态机设计
- centos安装pypy(含pypy下载地址)
- 必须知道的外国典故(转载)
- 奇异值分解(SVD)详解 .
- [BBS] ReplyOK.jsp 04
- textarea从数据库调取数据