Android事件的分发
来源:互联网 发布:linux运维门槛低 编辑:程序博客网 时间:2024/05/23 02:06
对于Android事件分发分小小理解,先来图看下:
Android的事件分发流程是这样的,起点是Activity,然后通过dispatchTouchEvent方法一层一层的向下进行分发,当
事件分发给ViewGroup的时候,ViewGroup还有个onInterceptTouchEvent可以决定是否拦截事件,拦截了就交给viewGroup的
onTouchEvent,不拦截就分发下去,最后分发到底层view,如果底层view没有处理,就返回给上层ViewGroup的onTouchEvent,
如果都没有处理,最后会返回给Activity的onTouchEvent。
dispatchTouchEvent(MotionEventev)方法中:
1、当returnsuper.dispatchTouchEvent(ev)时,事件会被正常的分发下去;
2、当return true时,事件则被当前方法给消费了,后续的move up事件都会被当前方法接收到
3、当return false时,后续事件不会再分发到当前view了,相当于接下来的事件与我无关了。
onInterceptTouchEvent(MotionEventev)方法中:
1、当return super.onInterceptTouchEvent(ev)时,事件默认不拦截
2、当return true时,事件会被拦截下来,交给自己的onTouchEvent处理
3、当return false时,同returnsuper.onInterceptTouchEvent(ev)。
4、onInterceptTouchEvent只在ACTION_DOWN事件中处理是否拦截的逻辑,后续Move,Up事件onInterceptTouchEvent是不起作用的
onTouchEvent(MotionEventev)方法中:
1、当returnsuper.onTouchEvent(ev)时,事件默认不接收
2、当returntrue时,事件会被接收处理。
3、当returnfalse时,同return super.onTouchEvent(ev)。
4、如果ACTION_DOWN事件返回True,但后续Move,Up事件返回false,那么后续的事件该onTouchEvent方法依然能接收到,但不会处理它,会返回给上层的ViewGroup或者Activity的onTouchEvent,由他们来处理。举例:ListView条目滑动处理。该listview可以上下滑动,也可以左右侧滑删除该条目:
微信,QQ已经实现该功能。
设置listview的setOnTouchListener方法,返回值不能为true,否则会将事件处理,这
样listview就不能滑动了。
参考资料:http://blog.csdn.net/footballclub/article/details/42424103?locationNum=9
- Android事件的分发
- android事件的分发
- Android的事件分发
- Android事件的分发
- Android的事件分发
- Android 事件的分发
- Android的事件分发
- Android的事件分发
- Android的事件分发
- android 的事件分发
- android-事件的分发 - 随心
- Android View的事件分发
- Android的事件分发(二)
- Android点击事件的分发
- android下的事件分发
- android事件分发的研究
- android的事件分发相关
- Android的事件分发机制
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- Android——搜索传统蓝牙设备
- 学习使用Android Studio编写AIDL的Demo
- linux下shell显示-bash-4.1$ 不显示路径解决方法
- 利用Caffe做回归(regression)、多标签训练
- Android事件的分发
- MPC8313开发板学习(一)SecureCRT:找不到端口号
- 使用jQuery操作Cookies的实现代码
- 高仿微信相册(整理)
- 一个华科研究生导师的肺腑之言(主要适用于理工科)
- Adobe Flash player折腾好久,ubuntu chromium 浏览器终于可以看视频
- iOS重写系统中的UINavigationController返回按钮的事件
- JavaScript中判断对象类型的种种方法
- Java中的单例