Android性能优化之绘制优化全面解析

  1. 减少布局文件的层级(嵌套)

  2. 自定义控件View优化:使用 clipRect() 、 quickReject()

优化方案1: 移除默认的 Window 背景

  • 背景 一般应用程序 默认 继承的主题 = windowBackground ,如默认的 Light 主题:
  • 问题 一般情况下,该默认的 Window 背景基本用不上:因背景都自定义设置 若不移除,则导致所有界面都多 1 次绘制

  • 解决方案 移除默认的 Window 背景

// 方式1:在应用的主题中添加如下的一行属性

@android:color/transparent

@null

// 方式2:在 BaseActivity 的 onCreate() 方法中使用下面的代码移除

getWindow().setBackgroundDrawable(null);

getWindow().setBackgroundDrawableResource(android.R.color.transparent);

优化方案2:移除 控件中不必要的背景

如2个常见场景:

  • 场景1:ListViewItem 列表页(ListView) 与 其内子控件(Item)的背景相同 = 白色,故可移除子控件(Item)布局中的背景

  • 场景2:ViewPagerFragment 对于1个ViewPager + 多个 Fragment 组成的首页界面,若每个 Fragment 都设有背景色,即 ViewPager 则无必要设置,可移除

关于更多场景,可使用工具 Hierarchy View 查看,具体请看文章: 过渡绘制的使用工具:Hierarchy View

优化方案3:减少布局文件的层级(减少不必要的嵌套)

  • 原理:减少不必要的嵌套 ->> UI层级少 ->> 过度绘制的可能性低

  • 优化方式:使用布局标签<merge> & 合适选择布局

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值