Android事件分发 浅记
来源:互联网 发布:知行理工忘记密码 编辑:程序博客网 时间:2024/06/11 15:34
个人理解,如果有不对的地方欢迎指正。
首先事件分发,事件是什么?我觉得简单讲就是人对手机发出的命令,也就是手指 触屏 的操作。那么分发呢?手指触屏首先应该是手机的硬件先感应到(触控传感器 我瞎说的呵呵哒)然后硬件把信号给系统?好了,这些我也不懂别瞎说了,总之我们的app接受到了手指触屏的事件,事件首先由window分发给根布局也就是rootview。我们基本上从这里控制事件就能满足大部分需求。来看个图:
这里我们捋一下控件的包含关系 :rootview包含viewgroup包含view
事件分发的顺序就是rootview--->viewgoroup--->view 这个是定好的规则不多解释。另外一点,假如说我的手指点的是view的上方,没点到view,那事件是不会发给view的。
说到这里基本上是说了个思路,那具体是怎么分发的呢。不管是什么类型view都有一个方法
@Override public boolean dispatchTouchEvent(MotionEvent event) { return super.dispatchTouchEvent(event); }(<a href="http://www.dztcsd.com/">资质代办</a>)
这个方法就是事件分发的关键了,例如rootview遍历它的一级子控件(如上图所画,那view就不算是rootview的一级子控件了),如果有子控件满足条件,就调用子控件的dispatchTouchEvent(MotionEvent event)方法,那么事件就发给它的子控件了。那什么是满足条件呢,比如最基本的条件,手指点的位置要和子控件有重合(大白话就是我最起码要点到子控件上吧!)。同理一级子控件再遍历它自己的一级子控件........事件就一级一级的分发下去了。另外
事件的信息(比如说触屏的位置,触屏的动作是按下还是弹起等等)就用MotionEvent event这个对象包装好了,用于使用。
另外说到事件的分发,就不得不说事件的消耗。事件是先分发再消耗,分发到不能分发了才开始消耗!!!还是刚才的图,比如事件发给view了,view开始要分发事件,遍历子控件.....等等它没有也不能有子控件啊!这个时候事件分发就结束了,这个时候才开始事件的消耗处理!
还有事件的控制等等.....以后有机会再写,内容还是比较多的。
作者: qq_匡璐_0
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
- Android事件分发 浅记
- android事件分发
- android 事件分发
- android事件分发
- android事件分发机制
- Android 事件分发
- Android事件分发机制
- Android 事件分发机制
- Android事件分发机制
- android事件分发
- Android事件的分发
- Android 事件分发机制
- android事件的分发
- Android 事件分发机制
- android 事件分发机制
- Android事件分发机制
- android 事件分发机制
- android事件分发机制
- 类似失物寻找的App-Android+php+mysql的初次探索
- TensorFlow官方教程学习笔记(一)——起步
- Docker之常用命令
- BZOJ 1003 [ZJOI2006]物流运输trans
- 笔记:C++设计模式——适配器模式:对象适配器(复制自网络)
- Android事件分发 浅记
- centos7搭建lnmp编译安装nginx【二】
- shape的四个常用属性及创建步骤
- BZOJ 1004 [HNOI2008]Cards
- 每个程序员都会的 35 个 jQuery 小技巧
- Android Listview 中出现 at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:7272) 错误
- Spring中HandlerInterceptor源码
- JS控制复选框全部选中和全部不选中
- 第7章 sed、gawk介绍与正则表达式-----------(sed编辑器基础知识)