Android事件的分发传递机制
来源:互联网 发布:go并发编程实战 epub 编辑:程序博客网 时间:2024/04/28 05:01
原文链接 http://blog.csdn.net/ahence/article/details/45243987
在一些复杂布局中,经常会遇到事件冲突,事件失效等问题,这就需要我们深入理解Android事件的分发传递机制。最好的方法是自己写一个demo,打印事件相关的日志查看其运行流程,然后再结合源码去深入理解。当然这里不会做这些,这里只有总结性的东西,如果你喜欢这种东西,那么请继续往下看。
老规矩,先上图:
用户的交互一般发生在触摸屏上,因此Android事件的传递必然涉及到ViewGroup和View,ViewGroup与View包含的处理事件传递的方法分别如下:
ViewGroup:
public boolean dispatchTouchEvent(MotionEvent event) public boolean onTouchEvent(MotionEvent event) public boolean onInterceptTouchEvent(MotionEvent event)
View:
public boolean dispatchTouchEvent(MotionEvent event) public boolean onTouchEvent(MotionEvent event)
其中dispatchTouchEvent负责事件分发,onTouchEvent负责事件处理,onInterceptTouchEvent负责事件拦截。可以看到,只有ViewGroup才拥有onInterceptTouchEvent方法。
了解完事件相关的基本方法后,来看一些关键点:
1.Android事件的传递顺序:Activity—>ViewGroup—>View。
2.如果dispatchTouchEvent中返回true,则不再往下继续分发,事件取消;返回false,则继续传递事件。
3.如果ViewGroup的onInterceptTouchEvent返回true,则表示拦截事件,故不再往下传递给View,交给ViewGroup自身处理;如果返回false,则继续传递给View。
4.如果onTouchEvent返回true,则表示其消费掉事件,但不会响应onClickListener;如果返回false,则会继续响应onClickListener,如果有设置过的话。
5.其他的可以参考上图中的具体描述。
- Android事件的分发传递机制
- Android 的事件分发、传递、处理机制
- 事件的分发传递机制
- Android View事件分发机制--点击事件的传递规则
- Android事件分发(事件传递机制)
- 【Android】【Framework】Android事件分发(传递)机制
- Android触摸事件的分发(传递)机制(图文)
- Android事件分发传递机制的领悟和理解
- android 事件分发传递机制(转)
- android 事件传递及分发机制
- Android 触摸事件分发传递机制
- Android中触摸事件传递分发机制
- android之事件分发传递机制
- Android Touch事件分发和传递机制
- android触摸传递机制 - 拦截、事件分发
- Android中的事件分发传递机制
- Android焦点事件分发与传递机制
- Android事件传递(分发)机制(新)
- 大话设计模式之状态模式
- 天声人語 20150425
- 网络原理,以及对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的图解
- Service初步
- 杭电。刘春英。老师 写给计算机软件专业的大学生
- Android事件的分发传递机制
- MySQL galera 的安装使用
- 日经春秋 20150425
- plupload:在一个jsp中创建多个上传控件
- Kali 更新和 Kali metapackages
- 日经社説 20150425 安保法制で何が変わるか具体的に説明を
- 游承超:鉴别钢化玻璃膜优劣的方法(9P)
- 文件系统,块设备
- 日经社説 20150425 地裁の原発判断が問うもの