dispatchTouchEvent,onUserInteraction,onTouchEvent 调用时序(按键监听函数调用过程)
来源:互联网 发布:矩阵的qr分解 编辑:程序博客网 时间:2024/06/10 03:04
一、只有一个Activity时:一次拇指点击事件(包括ACTION_DOWN,ACTION_UP),调用时序如下:
dispatchTouchEvent
onUserInteraction
onTouchEvent (ACTION_DOWN)
dispatchTouchEvent
onTouchEvent (ACTION_UP,不会触发onUserInteraction)
二、只有一个Activity,当键盘键按下时,时序如下
dispatchKeyEvent
onUserInteraction
onKeyDown
dispatchKeyEvent
onUserInteraction
onKeyUp (注意与触摸不同,当松开按键时onUserInteraction也会触发。)
三、Activity里有一个Layout,在Layout里有个按钮。一次拇指触摸点击事件(包括ACTION_DOWN,ACTION_UP),方法逻辑顺序如下:
Activity的dispatchTouchEvent
Activity的onUserInteraction
Layout的dispatchTouchEvent
Layout的onInterceptTouchEvent
Button的onTouchEvent(ACTION_DOWN)
紧跟着是一个ACTION_UP事件
Activity的dispatchTouchEvent(不触发Activity的onUserInteraction,它对ACTION_UP不起作用。)
Layout的dispatchTouchEvent
Layout的onInterceptTouchEvent
Button的onTouchEvent
Button的onClick
如果在onTouchEvent里返回true,消费了该事件,那么onClick将不会被响应。
但是如果不写onClick事件,而onTouchEvent事件返回false,也没有上述时序中的最后一步,其他时序即事件不会再向上传递,估计是onClick有默认响应不处理,而onClick不会有返回值。但是如果是继承了一个View而且又覆写了onTouchEvent,若返回false,那么触控会向上传递。
时序如下
Activity的dispatchTouchEvent
Activity的onUserInteraction
Layout的dispatchTouchEvent
Layout的onInterceptTouchEvent
Button的onTouchEvent (ACTION_DOWN)
Layout的onTouchEvent (ACTION_DOWN)
紧跟着是一个ACTION_UP事件
Activity的dispatchTouchEvent(不触发Activity的onUserInteraction,它对ACTION_UP不起作用。)
Layout的dispatchTouchEvent
Layout的onInterceptTouchEvent
Button的onTouchEvent
onClick事件不再发生。
对于键盘监听
VIEW和Activity本身都有相应键盘事件的ONKEYUP和ONKEYDOWN
对于VIEW,可以setOnKeyListener监听键盘事件,如果既对VIEW写了上述侦听,又覆写了ONKEYUP,DOWN事件,那么首先进入ONKEYDOWN,UP。
REFERENCES:http://lexhsu.lofter.com/post/3f493_1f3348
http://blog.csdn.net/wangtao4226/article/details/6868587
http://blog.csdn.net/ritterliu/article/details/7610486
http://www.cnblogs.com/jqyp/archive/2012/04/25/2469758.html
- dispatchTouchEvent,onUserInteraction,onTouchEvent 调用时序(按键监听函数调用过程)
- dispatchTouchEvent,onUserInteraction,onTouchEvent 调用时序
- dispatchTouchEvent,onUserInteraction,onTouchEvent 调用时序
- ViewGroup dispatchTouchEvent,onTouchEvent与onInterceptTouchEvent 调用过程
- Activity的事件处理:dispatchTouchEvent,onUserInteraction,onTouchEvent
- (转)onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent 和 onTouchEvent 调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- onInterceptTouchEvent和onTouchEvent调用时序
- C++ Primer 类
- 嵌入式 linux下shell命令set“-e”
- struct和typedef struct
- 【破解】PPS影音_V2.6.4破解VIP视频无广告
- 【计算机网络】动态路由--OSPF协议的实现
- dispatchTouchEvent,onUserInteraction,onTouchEvent 调用时序(按键监听函数调用过程)
- Oracle 存储过程,Hibernate 调用存储过程,JDBC调用存储过程,Oracle 动态SQL
- 图形学领域的关键算法及源码链接
- 几个免费的Scheme(Lisp)解释器
- 嵌入式 巧用find和xargs的结合命令
- 15.1工资数据的输入(三)
- POJ训练计划2109_Power of Cryptography(贪心)
- 【Linux编程】文件系统的分区、硬链接、软链接
- 【Eclipse】Eclipse 代码自动补全功能设置