Android 事件分发机制 理解杂谈
来源:互联网 发布:电脑屏幕声音录制软件 编辑:程序博客网 时间:2024/05/19 14:34
Android 事件分发机制 理解杂谈
Android 事件的分发机制 这个已经有很多人 分析过了,有得很详细 能够帮助我们更好的理解事件的分发机制。所以这里我就不会再过多得写这些问题了。这里主要是写 事件是怎么传递的。
- windows , activity, view 事件传递中的作用
- 事件传递的始终
在开始写我自己要写内容之前 先推荐两篇事件分发机制的博客,我是看了这个博客才对事件分发有了进一步的理解
Android事件分发机制完全解析,带你从源码的角度彻底理解(上) http://blog.csdn.net/guolin_blog/article/details/9097463
Android事件分发机制完全解析,带你从源码的角度彻底理解(下) http://blog.csdn.net/guolin_blog/article/details/9153761
window , activity, view 事件传递中的作用
一下是我对这3这得理解,也许存在着问题 或者是片面的 ,请大家多多的指教:
window 顾名思义window 就是我们的手机屏幕 每个手机只有这一个屏幕
activity 是应用中的一个页面,是view得容器,application通过activity将想展示的页面展示给我们(当这个activity处于 最前端时 他就获得了当前的window,我们就看到了一个鲜活的界面)
view 是显示给用户看得一个一个的组件
(以上纯属个人观点,与官方有出入的地方,请指正)
事件传递的始终
这里只说明触屏事件 。事件是从手指触到windows开始的,window已经与最前端的activity绑定 ,这样就会调用activity中dispatchTouchEvent()方法 ,源码如下:
public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); } if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); }
我们看到这段源码 有两个if语句
1,ev.getAction() == MotionEvent.ACTION_DOWN 这个是必然成了的 ,就会执行 onUserInteraction() 方法 ,看下这个源码
public void onUserInteraction() { }
我们可以看到这个方法默认什么也没有,你可以实现他加上自己想要的逻辑
2,getWindow().superDispatchTouchEvent(ev) 这个判断包含连个层级 一个 getWindow()这个是获得当前的window 另一个superDispatchTouchEvent(ev)是什么呢,找源码看看
是个抽象的方法
public abstract boolean superDispatchTouchEvent(MotionEvent event);
看看注释
/**
* Used by custom windows, such as Dialog, to pass the touch screen event
* further down the view hierarchy. Application developers should
* not need to implement or call this.
*
*/
通过触屏事件 分析view的层次结构(最后说道我们不需要实现这个方法,系统已经为我们做了)。接下来就会像我在上面 转载的那两个博客一样进行事件的传递
这个是我自己的理解,希望大神给指教一下,谢谢!
- Android 事件分发机制 理解杂谈
- Android杂谈(12)View的事件分发机制
- 理解Android中的TouchEvent事件分发机制
- android 快速理解事件分发机制
- 关于Android事件分发机制的理解
- 深入理解Android事件分发机制
- Android中事件分发机制理解
- Android事件分发机制------------>验证+理解
- 深入理解Android事件分发机制
- Android事件分发机制的理解
- 一步步理解Android事件分发机制
- Android View事件分发机制理解
- Android事件分发机制简单理解
- android 事件分发机制 概念理解
- 完全理解android事件分发机制
- Android事件分发机制的理解
- Android事件分发消费机制理解
- Android事件分发和消费机制理解
- ArcGIS教程:克里金法的工作原理(一)
- oracle数据库如何购买?
- 简单随机验证码
- JavaScript DOM 三
- ListView使用技巧
- Android 事件分发机制 理解杂谈
- Androidx学习笔记(4)-- 事件处理的四种写法(点击事件为例)
- C#多线程(Thread)开发基础
- 编程珠玑(第二版) 第二章 问题A
- 安装多个版本gcc又卸载一个后,gcc -g选项编译出错:/tmp/cctQ99Ig.s: Assembler messages, ld returned 2 exit status
- 导航条固定及浮动的实现
- javaEE之------Spring-----》 AspectJ注解
- 人脸检测
- MySQL5.7版本密码设置