1022. android - LinearLayout RelativeLayout在布局时优先选择谁?有何区别?

个人博客: 斯科特安的时间

很多初接触android的同学在布局时都会有这样一个疑问:

这个布局的父亲用LinearLayout和RelativeLayout都可以,我用哪个更合适呢?

有些同学可能就开始权量了,RelativeLayout更灵活,用这个吧。但是感觉LinearLayout更方便啊,自动帮我把这几个View分布开了,不会一开始就挤在一块。

其实呢,随着项目的进展,布局会发生调整,这是再自然不过的事情。

不要让自己这些『主观』的思考拖慢进度。

今天我从数据上来说下在面临这种情况(两者都可选择)时,应如何选择。

注: 当然,很多情况会有其它更好的选择,我这里仅就这两者进行对比。

从效率的角度考虑,选取渲染速度更快的那个。

我们知道一个View的绘制包括三个步骤:

  1. 测量 measure
  2. 布局 layout
  3. 绘制 draw

这三个哪个拖后腿都会影响渲染效率,我们就来看看使用不同的布局时,这三者之间的差距。

|子View| 父View
—|—|—

父View使用LinearLayout|
《1022. android - LinearLayout RelativeLayout在布局时优先选择谁?有何区别?》 linear_child.png |
《1022. android - LinearLayout RelativeLayout在布局时优先选择谁?有何区别?》 linear_parent.png

父View使用RelativeLayout|
《1022. android - LinearLayout RelativeLayout在布局时优先选择谁?有何区别?》 relative_child.png

|
《1022. android - LinearLayout RelativeLayout在布局时优先选择谁?有何区别?》 relative_parent.png

这里我们主要关注 Measure 时间。
通过对比我们可以看到,父View使用LinearLayout时,父亲和孩子的Measure时间是相差无几的。
而父View使用RelativeLayout时,父亲几乎是孩子的两倍。

RelativeLayout 的子View经常会被measure两次。

结论

  1. 两者都可使用,并且层数不受影响的前提下,尽量使用LinearLayout.
  2. 若是层数受影响,优先考虑层数少的。(这点会在以后的文章中谈到)
    原文作者:斯科特安
    原文地址: https://www.jianshu.com/p/b5ea39b33710
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞