1022. android - LinearLayout Rel

作者: 斯科特安 | 来源:发表于2016-08-19 12:39 被阅读143次

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

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

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

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

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

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

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

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

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

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

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

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

    |子View| 父View
    ---|---|---

    父View使用LinearLayout| linear_child.png | linear_parent.png
    父View使用RelativeLayout| relative_child.png | relative_parent.png

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

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

    结论

    1. 两者都可使用,并且层数不受影响的前提下,尽量使用LinearLayout.
    2. 若是层数受影响,优先考虑层数少的。(这点会在以后的文章中谈到)

    相关文章

      网友评论

      • Android之路:网上说法:
        frameLayout -> 1次
        LinearLayout->(不使用weight 1次 使用weight 2次)
        RelativeLayout -> 2次
        斯科特安:@_缕清风 嗯嗯 是这样的。

      本文标题:1022. android - LinearLayout Rel

      本文链接:https://www.haomeiwen.com/subject/fddbsttx.html