Android里应用程序,应用程序窗口和视图对象之间的关系

栏目: Android · 发布时间: 7年前

内容简介:很久没更新博客了,在新博客里打算对android的view的绘制机制进行全方位分析,由于涉及到的范围相当之广(比消息机制里涉及到的还多,简直可怕),因此打算先来个总序来说清楚应用程序(activity),应用程序窗口(window)和视图对象(view)之间的关系,方便读者对接下来的博客(view的绘制)能更好地理解,这就是这篇博客的目的。在Android里, 每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口。每一个应用程序窗口内部又包含有一个View对象,用来描述应用程

很久没更新博客了,在新博客里打算对android的view的绘制机制进行全方位分析,由于涉及到的范围相当之广(比消息机制里涉及到的还多,简直可怕),因此打算先来个总序来说清楚应用程序(activity),应用程序窗口(window)和视图对象(view)之间的关系,方便读者对接下来的博客(view的绘制)能更好地理解,这就是这篇博客的目的。

在Android里, 每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口。每一个应用程序窗口内部又包含有一个View对象,用来描述应用程序窗口的视图。应用程序窗口视图是真正用来实现UI内容和布局的,也就是说,每一个Activity组件的UI内容和布局都是通过与其所关联的一个Window对象的内部的一个View对象来实现的。

先来张图理一下(从其他博客里盗用的图):

Android里应用程序,应用程序窗口和视图对象之间的关系

对于window,DecorView,view,viewGroup,windowMnager和viewRoot的关系如下:

1.每个主窗口中都有一个view,称之为decorview,是主窗口中的顶级view,实际上是viewGroup,viewGroup又是对一组view的管理,因此在viewGroup中建立了所有view的关系网,那么是如何实现的呢?是因为在view中有两个成员变量叫做mParent,mChildren,它们就是用来管理view的上下级关系的。而最终viewGroup附属在主窗口上,这样就很容易实现在窗口中通过findViewById找到具体的view了。当然,view的事件处理也是根据这个路径来处理的。

2.windowManager主要是用来管理窗口的一些状态,属性,view增加,删除,更新,窗口顺序,消息收集和处理等等。windowManager继承自ViewManager.里面涉及到窗口管理的三个重要的方法,分别是:addView(),updateViewLayout(),removeView(),在windowManager中还有一个静态类layoutParams,通过它可以设置和获得当前窗口的一些属性。首先来看看addView()方法,在该方法中,会利用layoutParams来获得window中的view的一些属性,并为每个window创建viewRoot,viewRoot是view和windowManager之间的桥梁,真正把view传递给windowManager的是通过viewRoot来实现的(setView()方法)

3.ViewRoot相当于是MVC模型中的Controller.实际上,ViewRoot继承自handler,因此也实现了view和windowManager之间的消息传递,窗口中的view的事件处理,消息发送,回调事件等都将通过ViewRoot来处理。

4.当activity对象被创建完毕之后,会在PhoneWindow中生成一个DecorView,DecorView是一个窗口的顶级容器,其本质是一个FrameLayout,同时会创建ViewRootImpl(ViewRoot的实现类)对象,并将ViewRootImpl与DecorView建立关联:

 public void reportActivityRelaunched() {
        if (mDecor != null && mDecor.getViewRootImpl() != null) {
            mDecor.getViewRootImpl().reportActivityRelaunched();
        }
    }

View的绘制流程从ViewRoot的performTraversals方法开始,经过measure、layout、draw三大过程完成对一个View的绘制工作。peformTraversal方法内部会调用peformMeasure、peformLayout、peformDraw这三个方法,这三个方法内部又分别调用view的Measure、Layout、Draw方法。

---------------------

作者:_花开满楼

来源:CSDN

原文:https://blog.csdn.net/qq_28269905/article/details/70895269

版权声明:本文为博主原创文章,转载请附上博文链接!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

复杂网络理论及其应用

复杂网络理论及其应用

汪小帆、李翔、陈关荣 / 清华大学出版社 / 2006 / 45.00元

国内首部复杂网络专著 【图书目录】 第1章 引论 1.1 引言 1.2 复杂网络研究简史 1.3 基本概念 1.4 本书内容简介 参考文献 第2章 网络拓扑基本模型及其性质 2.1 引言 2.2 规则网络 2.3 随机图 2.4 小世界网络模型 2.5 无标度网络模型 ......一起来看看 《复杂网络理论及其应用》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码