Window、DecorView和RootView
概述:Android中所有的视图都是依附在window中进行显示的,换句话说就是Activity的视图是依附在Window上从而进行呈现的。DecorView作为视图的根节点而RootView是作为DecorView的管理者、是实现测量、布局、绘制的操作者同时也负责与WMS的通信。
文中代码均来自【Android自定义View绘制前的准备:DecorView创建 & 显示】如有需要请移步Android自定义View绘制前的准备:DecorView创建 & 显示
从Activity的onCreate()开始
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void setContentView(int layoutResID) {
// getWindow() 作用:获得Activity 的成员变量mWindow
// Window类实例的setContentView()
getWindow().setContentView(layoutResID);
initWindowDecorActionBar();
}
public void setContentView(int layoutResID) {
// 1. 若mContentParent为空,创建一个DecroView
// mContentParent即为内容栏(content)对应的DecorView = FrameLayout子类
if (mContentParent == null) {
installDecor();
} else {
// 若不为空,则删除其中的View
mContentParent.removeAllViews();
}
// 2. 为mContentParent添加子View
// 即Activity