既然分析View,咱就先从View加载这块当做入口
先来看一下LayoutInflater的基本用法吧,它的用法非常简单,首先需要获取到LayoutInflater的实例,有两种方法可以获取到,常用的如下:
LayoutInflater layoutInflater = LayoutInflater.from(context);
另外一种写法:
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
第一种就是第二种的简单写法,只是Android给我们做了一下封装而已。得到了LayoutInflater的实例之后就可以调用它的inflate()方法来加载布局了,如下所示:
layoutInflater.inflate(resourceId, root);
inflate()方法一般接收两个参数,第一个参数就是要加载的布局id,第二个参数是指给该布局的外部再嵌套一层父布局,如果不需要就直接传null。这样就成功成功创建了一个布局的实例,之后再将它添加到指定的位置就可以显示出来了。实际真正执行加载Veiw工作的是下面这个方法
public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) {
synchronized (mConstructorArgs) {
final AttributeSet attrs = Xml.asAttributeSet(parser)

本文从LayoutInflater的角度探讨Android中View的工作原理。首先介绍了LayoutInflater的获取及其inflate()方法的使用,详细阐述了如何通过解析布局文件创建View对象。接着,分析了createViewFromTag()方法在反射创建View实例中的作用,以及rInflate()方法如何递归遍历并构建DOM结构。最后,讨论了inflate()方法第三个参数attachToRoot的含义和应用场景。
最低0.47元/天 解锁文章
2187

被折叠的 条评论
为什么被折叠?



