Android LayoutInflater原理分析观后感(一)

先发一下原文地址:http://blog.csdn.net/guolin_blog/article/details/12921889

方便大家近一步了解大牛的原始博文,可能我理解的不深刻,在此只是单纯做个笔记,记录一下自己学习的知识,菜鸟一枚,目前在IT圈混,以后还真不知道自己能做什么。

LayoutInflater我也使用过,只是了解的不够深刻,我先google一下它的官方含义吧,给大家广义的讲解一下它的含义:LayoutInflater类似于findviewbyxx,都是查找资源,但LayoutInflater使用的场景主要在layout文件夹下查找xml布局,而findviewbyxx主要查找xml文件里面的具体内部控件。

综上所述我理解的LayoutInfalter就是将一个xml布局文件查找出来,因为如果你在activity中直接使用findviewbyxx,对应的只会在setContentView()这个layout里面查找控件。因此如果你在当前activity里面用到了其它layout布局,如果想使用这个布局的控件,则你必须先inflate找出这个layout,然后再从此layout上findviewbyxx。

了解了LayoutInflater的基本概念,接下来我就看看这个博文能带给我哪些启示吧。SetContentView()和LayoutInflater加载布局的方式一样,想想也应该是这样的,只不过封装了一下吧,默认加载main的布局。

两种获得LayoutInflater的实例可以记录一下

1. LayoutInflater inflater = LayoutInflater.from(context);

2. LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);

实例化后可以通过inflate()方法加载布局

layoutInflater.inflate(resource, root); 第一个参数是要加载布局的id,第二个参数是值给该布局外部再嵌套一个父布局,如果不需要父布局,则置为null。

通过一个布局加载另一个布局方法博文中也有介绍,在此不再赘述。先获得mainLayout,然后inflate buttonLayout。mainLayout.addView(buttonLayout);动态添加View。

接下来讲到了LayoutInflater的原理,主要是这个createViewFromTag()方法。通过节点名称创建View,然后rInflate方法递归场景所有节点对象。整个布局文件解析完成形成一个完整的DOM结构,最终会把最顶层的根布局返回,Inflate()加载完成。

最后此博文讲了一个我从前不懂的知识,我总结一下就是Android所有的控件必须处在一个布局中,这样它的layout_width或layout_height属性才会生效。这两个属性实际上是表达控件在布局中的属性,如果布局都不存在,那么这两个属性就没有意义啦。简单总结一下属性内容的含义,match_parent表示让View宽度填满布局,wrap_content表示让View的宽度刚好可以包含其内容。

最原始的layout布局外部存在一个FrameLayout,这个还是很有意思的,我们所有的布局实际上都是存在于这个FrameLayout之上的。

今天学习了不少东西,要吃午饭了,下午看看有没有时间继续学习一下。

勤能补拙,最近看了一本好书,推荐一下《电商时代》,还不错,挺有意思的,感兴趣的同学可以看一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值