本文主要是介绍View 体系 - Activity、Window、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) |
这篇关于View 体系 - Activity、Window、DecorView、ViewRoot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!