View布局优化方案汇总

  1. 确保每个布局都合适地被使用,认真考虑布局中的每个属性的使用,能简化则简化之。多考虑是否有其他更优的布局方案替换当前的方案。
  2. 尽量使用Relativelayout以减少布局文件中View对象的个数,减少内存的占用。可用RelativeLayout作为父布局。某些情况也可考虑LinearLayout. 如嵌套的LinearLayout较少时,小屏幕手机适配时。
    a)Relativelayout相对LinearLayout的优势:
    i.比较容易实现各种布局样式,相对线性布局可减少View对象创建的个数, 减少内存的占用
    ii.比较灵活的布局形式
  3. 布局宽度和高度单位使用dip(dp), 不要使用px;
  4. 文字大小单位使用sp;
  5. 内容较多界面使用ScrollView包裹;
  6. 使用 style主题来定义一个通用的属性,从而重复利用代码,既可以减少代码量,又方便以后项目代码维护。
  7. 将布局扁平化,减少根节点,减少布局嵌套的层次。如使用TextView可以设置四个方向图片来直接替代LinearLayout下包裹一个ImageView 和TextView,从而减少了一层嵌套布局。如下图微信界面优化后的效果:
    这里写图片描述
    引用自:http://www.2cto.com/kf/201506/412711.html

    1. 不重复设置属性。嵌套多个子布局时,能在父布局中设置的属性,就不在子布局中单独设置,如多个子布局并列时的padding属性,既有助于提高性能,又减少代码量,方便维护。
      8.使用一些功能强大的控件优化布局。如V7包中的 LinearLayoutCompat 组件来实现线性布局元素之间的分割线,从而减少了使用View来实现分割线效果。LinearLayoutCompat:http://blog.csdn.net/feiduclear_up/article/details/46619637
      RecyclerView类似ListView,提供了一种插拔式的体验,高度的解耦,异常的灵活。
      RecyclerView:http://blog.csdn.net/lmj623565791/article/details/45059587
      9.动态加载布局,手动的去写布局,省去系统解析xml的性能消耗。弊端:可能还需要为控件命名,获取控件等操作,代码量会增加。
      10.注解方式写findViewById,如使用ButterKnife工具。可以使代码简洁,但性能会有损耗。
    2. 优化GPU过度绘制:
      i.优化布局,减少层级,减少嵌套
      ii.减少没必要的背景background设置,建议设置背景时,多想想GPU的过度绘制(显示GPU过度绘制中的例子)
      iii.给Activity定义一个Theme,通过theme定义背景可以减少一层
  8. 用TextView显示图片,android:drawableLeft=”@drawable/icon”

  9. 用TextView行间距;
  10. 使用Spannable或Html.fromHtml;
  11. 按需嵌入惰性控件ViewStub;
    16.用LinearLayout自带的分割线android:divider=”@drawable/divider” android:showDividers=“middle”
  12. 添加间距,用Space控件,Space android:layout_width=”match_parent” android:layout_height=”18dp”/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值