在AppCompatActivity的onCreate方法中我们都知道setContentView这个方法是加载布局文件。这个方法使用很简单直接把layout布局文件放进去就可以了。那么具体内部是怎么将它显示到桌面的呢,今天就从setContentView()来解析一下Android中View的创建过程。
打开androidx/appcompat/app/AppCompatActivity.java,这里setContentView就一行代码,调用AppCompatDelegate的setContentView()。
@Override
public void setContentView(@LayoutRes int layoutResID) {
getDelegate().setContentView(layoutResID);
}
AppCompatDelegate是一个抽象类,我们分析一下它的实现类AppCompatDelegateImpl在setContentView()方法中做了什么。
@Override
public void setContentView(int resId) {
ensureSubDecor();
//获取content视图
ViewGroup contentParent = mSubDecor.findViewById(android.R.id.content);
//移除viewGroup下的所有子View
contentParent.removeAllViews();
//解析布局文件添加到content视图中
LayoutInflater.from(mContext).inflate(resId, contentParent);
mAppCompatWindowCallback.getWrapped().onContentChanged();
}
打开/frameworks/base/core/java/android/