Android性能优化之布局优化

一、Android系统是如何处理UI组件的更新操作

  • Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在 DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。
  • CPU负责把UI组件计算成Polygons,Texture纹理,然后交给GPU进行栅格化渲染。
  • GPU进行栅格化渲染。
  • 硬件展示在屏幕上。

二、Android布局优化常用方法
减少层级,越简单越好,减少overdraw,就能更好的突出性能

  • 首先是善用相对布局Relativelayout可以通过扁平的RelativeLayout降低LinearLayout嵌套所产生布局树的层级
  • 布局优化的另外一种手段就是使用抽象布局标签include、merge、ViewStub
  • 使用Android新的布局方式ConstaintLayout(约束布局)
  • 利用Android Lint工具寻求可能优化布局的层次

include标签
include标签常用于将布局中的公共部分提取出来
merge标签
merge标签是作为include标签的一种辅助扩展来使用,它的主要作用是为了防止在引用布局文件时产生多余的布局嵌套
viewstub标签
用来在程序运行时简单的填充布局文件

使用组合控件: 包含了一个ImageView以及一个TextView控件的LinearLayout如果能够作为一个组合控件将会被更有效的处理。
合并作为根节点的帧布局(Framelayout) :如果一个帧布局时布局文件中的根节点,而且它没有背景图片或者padding等,更有效的方式是使用merge标签替换该Framelayout标签 。
无用的叶子节点:通常来说如果一个布局控件没有子视图或者背景图片,那么该布局控件时可以被移除(由于它处于 invisible状态)。
无用的父节点 :如果一个父视图即有子视图,但没有兄弟视图节点,该视图不是ScrollView控件或者根节点,并且它没有背景图片,也是可以被移除的,移除之后,该父视图的所有子视图都直接迁移至之前父视图的布局层次。同样能够使解析布局以及布局层次更有效。
过深的布局层次:内嵌过多的布局总是低效率地。考虑使用一些扁平的布局控件,例如 RelativeLayout、GridLayout ,来改善布局过程。默认最大的布局深度为10 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DerMing_You

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值