UI 界面性能优化(二)

Android 平台主要通过优化 Layout 布局层次角度:减少层级和 Overdraw、防止不必要的重新 Layout 和 Measure、加快界面显示速度、减少系统 GC 次数等措施去进行 UI 优化。

优化 GPU Overdraw

通过开发者选项的“Show GPU Overdraw”可以显示检查界面的过度绘制情况。该优化并不复杂,通过去掉层叠布局中多余的背景设置、图片控件,有前景内容的时候不显示背景、界面背景定义到 Activity 的主题中、减少 Drawable 的复杂 Shape 使用等手段就可以基本消除过度绘制,减少对 GPU 和 CPU 的浪费。

由于过度绘制指在屏幕的一个像素上绘制多次(譬如一个设置了背景色的TextView就会被绘制两次,一次背景一次文本;这里需要强调的是Activity设置的Theme主题的背景不被算在过度绘制层级中),所以最理想的就是绘制一次,因此我们需要依据此颜色分布进行代码优化,譬如优化布局层级、减少没必要的背景、暂时不显示的View设置为GONE而不是INVISIBLE、自定义View的onDraw方法设置canvas.clipRect()指定绘制区域或通过canvas.quickreject()减少绘制区域等措施去优化。

优化布局层级

UI布局嵌套层级越多,测量和布局的时间就会相应增加,同时底层 Framework 创建硬件列表的时间也会相应增加。因为历史遗留的原因,有时为了增加布局的可读性,我们会嵌套不同层次的父布局来实现原本只要简单布局就可以实现的功能,有时还会添加一些测试阶段才会使用的布局。通过删除无用的层级,或者对整个布局进行改造使用RealtiveLayout替换LinerLayout减少布局层级;此外,使用Merge标签或ViewStub标签来优化整个布局性能,比如一些显示错误界面、加载提示框界面等,不是必须显示的这些布局可以使用ViewStub标签来提升性能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值