个人博客: 斯科特安的时间
很多初接触android的同学在布局时都会有这样一个疑问:
这个布局的父亲用LinearLayout和RelativeLayout都可以,我用哪个更合适呢?
有些同学可能就开始权量了,RelativeLayout更灵活,用这个吧。但是感觉LinearLayout更方便啊,自动帮我把这几个View分布开了,不会一开始就挤在一块。
其实呢,随着项目的进展,布局会发生调整,这是再自然不过的事情。
不要让自己这些『主观』的思考拖慢进度。
今天我从数据上来说下在面临这种情况(两者都可选择)时,应如何选择。
注: 当然,很多情况会有其它更好的选择,我这里仅就这两者进行对比。
从效率的角度考虑,选取渲染速度更快的那个。
我们知道一个View的绘制包括三个步骤:
- 测量 measure
- 布局 layout
- 绘制 draw
这三个哪个拖后腿都会影响渲染效率,我们就来看看使用不同的布局时,这三者之间的差距。
|子View| 父View
---|---|---
父View使用RelativeLayout| relative_child.png | relative_parent.png
这里我们主要关注 Measure 时间。
通过对比我们可以看到,父View使用LinearLayout时,父亲和孩子的Measure时间是相差无几的。
而父View使用RelativeLayout时,父亲几乎是孩子的两倍。
RelativeLayout 的子View经常会被measure两次。
结论
- 两者都可使用,并且层数不受影响的前提下,尽量使用LinearLayout.
- 若是层数受影响,优先考虑层数少的。(这点会在以后的文章中谈到)
网友评论
frameLayout -> 1次
LinearLayout->(不使用weight 1次 使用weight 2次)
RelativeLayout -> 2次