01 - [开胃菜] - Activity.setContentView 涉及到的类及相关概念
02 - [正菜] - Activity.setContentView流程
03 - [甜汤] - AppCompatActivity.setContentView 流程
04 - [完结] - setContentView 流程总结
大家新年好, 病毒肆虐期间, 在家学习学习, 马上就要复工了, 提前调整调整状态.
setContentView 是我们经常用到的, 可是后面都做了什么, 大家了解吗?
千里之行始于足下, 现在我们先来了解 Activity 的 setContentView 后续流程中的涉及到的类和相关的几个概念.
1. 1 Window.java
官方注释翻译:
是一个顶层窗口外观和行为策略的抽象基类, 这个类的实例应作为顶层视图添加到窗口管理器. 它提供了标准的UI策略, 比如背景, 标题其余, 默认密钥处理等.
此抽象类的唯一实现类是
android.view.PhoneWindow
.
1.2 DecorView.java
DecorView
继承 FrameLayout
官方注释翻译如下:
这是窗口的顶层视图, 包含窗口装饰.
理解:
DecorView
就是一个FrameLayout
, 是最顶层的View
. 它包含了Window
的装饰(背景, 标题, UI策略等), 会体现在这个View上.
看到这里可以知道了两个概念.
顶层窗口 Window (PhoneWindow)
顶层视图 View (DecorView)
它们两个关系如下: 顶级窗口包含的状态属性, 会在顶级视图体体现出来, 比如窗口大小, 背景, 标题, 等.
1.3 PhoneWindow.mContentParent 变量
mContentParent
是 PhoneWindow 中的一个 ViewGroup 类型的变量, 官网注释翻译如下
这是一个放置窗口内容的视图, 它不是 mDecor 本身, 就是一个mDecor 的子View
( mDecor 是 PhoneWindow 中的一个 DecorView 类型的变量. )
网友评论