View 自定义 - Activity、Window、DecorView、ViewRoot

本文详细解释了AndroidActivity控制器的作用,包括其在应用生命周期中的角色、与Window和DecorView的关系,以及如何通过WindowManager创建和管理视图。重点介绍了DecorView作为内容栏的结构和ViewRoot的连接与绘制流程。

一、概念 

定义作用具体描述
Activity控制器

控制生命周期、处理事件

        管理视图的添加与显示(内部持有一个Window),通过回调与 Window 及 View 进行交互。

        不负责视图绘制,通过内部的 Window 承载,它真正代表一个窗口,一个Activity包含一个 Window。

Window窗口承载视图的显示

        Window是一个窗口的抽象概念,Activity实际持有的是其子类 PhoneWindow,PhoneWindow有一个内部类DecorView。

        通过 WindowManager 创建 DecorView  来加载 Activity 的布局,并将它交给 ViewRoot 进行视图绘制和其它交互。 

DecorView顶级ViewGroup视图树的根节点

        是 FrameLayout 的子类,包含了系统定义好的标准窗口框架:一个垂直方向的 LinearLayout,上为标题栏 titlebar、下为内容栏 content。Activity通过 setContent() 设置的布局文件就是被加到内容栏中。

得到content:

ViewGroup content = (ViewGroup)findViewById(android.R.id.content);

得到设置的View:

ViewGroup rootView = (ViewGroup) content.getChildAt(0);

ViewRoot连接器链接 WindowManager 和 DecorView、完成View的绘制流程

链接作用:与 WMS 通讯,调整窗口大小及布局。

绘制流程:measure、layout、draw。

在主线程 Activity 对象被创建后,自动将 DecorView 添加到 Window 中并创建 ViewRootImpl 对象:

root = new ViewRootImpl(view.getContent(),display);

root.setView(view,wparams,panelParentView)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值