Android布局优化思考

一、关于RelativeLayout和LinearLayout的使用

由源码可以知道,RelativeLayout需要对其子View进行两次measure过程,而LinearLayout只需一次measure过程,我们知道,onMeasure的耗时越长效率就越低,但是如果LinearLayout中有weight属性,也需要进行两次measure,即便如此,仍然会比RelativeLayout的情况好一些。

总体原则:减少布局层次,加快渲染速度。

当线性布局和相对布局均可以实现时,优先使用线性布局LinearLayout,如果使用的是相对布局RelativeLayout,尽量避免RelativeLayout嵌套RelativeLayout,并且尽量使用padding代替margin。

二、<include />的使用

<include />标签可以在一个布局中引用另外一个布局,实现布局重用。比如共同的标题栏(title.xml),只要加上如下代码即可重用。

<include layout=“@layout/title” />

三、<merge /> 的使用

<merge />标签可以减少视图的层级结构。比如说,如果主布局是线性布局,include进来的也是线性布局,这时候include进来的线性布局就是多余的,可以用merge标签代替(重用布局的父布局使用merge),仍使用include引入布局。

四、ViewStub的使用

ViewStub是一个轻量级的View,宽高均为0,实现View的延迟加载,避免资源的浪费,减少渲染时间,在需要的时候才进行加载。比如提醒框的使用。

五、Space控件的使用

Space控件占据一定的空间,但是不显示任何东西,可用于行间隔。

六、TextView的使用

TextView可同时显示文字和图片;TextView的属性lineSpacingExtra可设置行间距。

七、LinearLayout线性布局

LinearLayout的属性divider可设置分割线,相关属性:dividerPadding、showDividers。

总结就是进步,哪怕是一点点。 Github地址:https://github.com/chenxkang
原文地址:https://www.cnblogs.com/chenxkang/p/6589674.html