自定义view之 Android LayoutInflater原理分析

此篇是我读郭霖大神博客的读书笔记。

       虽然setContentView()方法大家都会用,但实际上Android界面显示的原理要比我们所看到的东西复杂得多。任何一个Activity中显示的界面其实主要都由两部分组成,标题栏和内容布局。标题栏就是在很多界面顶部显示的那部分内容,比如刚刚我们的那个例子当中就有标题栏,可以在代码中控制让它是否显示。而内容布局就是一个FrameLayout,这个布局的id叫作content,我们调用setContentView()方法时所传入的布局其实就是放到这个FrameLayout中的,这也是为什么这个方法名叫作setContentView(),而不是叫setView()。

最后再附上一张Activity窗口的组成图吧,以便于大家更加直观地理解:

LayoutInflater的基本用法有2种:

1:LayoutInflater layoutInflater = LayoutInflater.from(context);

2 :LayoutInflater layoutInflater = (LayoutInflater) context

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

第一种方法是第二种的封装简写。

得到了LayoutInflater的实例之后就可以调用它的inflate()方法来加载布局了,:layoutInflater.inflate(resourceId, root);

那LayoutInflater 是如何工作的呢 ?

LayoutInflater其实就是使用Android提供的pull解析方式来解析布局文件的。

具体源码就不上图了 ,如果有需求可以看郭霖大神的原版文章,我就不献丑了。

郭霖大神的文章地址:http://blog.csdn.net/guolin_blog/article/details/12921889

推荐阅读更多精彩内容