zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【odoo14】【好书学习】第一章、安装odoo的开发环境
    echarts 根据geojson 数据绘制区域图(精确到镇)
    百度地图 获取具体位置经纬度
    js 实时监听滚动条状态 判断滚动条位置
    vue cli3 使用elemet-plus
    关于vue告警 More than 1 blank line not allowed
    vue cli3 创建项目
    intelliJ idea 自动修复eslint语法问题
    函数式编程
    二分法
  • 原文地址:https://www.cnblogs.com/chenxkang/p/6589674.html
Copyright © 2011-2022 走看看