Android过度绘制

Android 从一诞生到现在已经发展到7.0版本,卡顿现象一直被用户所吐槽 Android的流畅度确实不如IOS操作系统 哪怕一些大型企业的APK也会存在卡顿现象,例如:咸鱼,每一个开发者应该注意性能方面优化的问题,性能优化我们不得不提及:过度绘制的概念,过度绘制指的是同一个像素,在同一时间内被重复绘制多次,同时消耗大量的CPU资源,在Android手机的开发者选项中有一个调试过度选项的功能,打开该选项之后就会出现蓝白相间的色块这就是过度绘制的信息

开发者选项
比如上界面蓝色代表绘制一次,绿色代表绘制两次,浅红色代表重复绘制三次,深红色代表重复绘制四次,纯白色代表从没有重复绘制过!

重复绘制
重复绘制会导致界面加载掉帧,不流畅,对于用户体验来说就是特别卡顿,为了开发的流畅度而言,提升应用流畅度,优化过度绘制这项工作还是非常有必要的!开发的原则就是不允许超过面积1/4的屏幕绘制超过三次
我的项目

优化方法

1.移除默认的windows窗体
2.一般默认的窗体都会有一个默认的windowsBackground

<style name="Theme.Light">
    <item name="isLightTheme">true</item>
    <item name="windowBackground">@drawable/screen_background_selector_light</item>
    ...
</style>

比如默认的Light主题,如果不移除系统窗体就会默认多绘制一次,系统ActionBar一般并不是我们所需要的,所以干脆移除提高效率
2.移除不必要的背景颜色!比如在我们开发过程中设置Listview的背景颜色为白色 就没有必要设置Listview的item的背景颜色为白色了 这样重复的操作是没有必要的!而且边距margin没有控制好会导致点击的状态会出现非整个条目的颜色渐变!还有一个比较常见的应用场景就是 当我们去加载首页的时候 如果我们给Viewpager里面的Fragment加载背景颜色 我们很久没有必要再给Activity的根布局再添加背景颜色了
3.写合理高效的布局尽量减少布局的嵌套,比如在ListView我们添加分割线如果在布局文件里面添加分割线加深了布局层级,多了两级绘制,如果我们在代码里面将driver add进去就会避免了这个问题 我们不要特意为了设置margin值特意给driver包裹一层LinearLayout
在开发中 我们如何优化我们的代码 过度绘制与优化后的布局

优化方法:
先分析每个地方最少可以会之多少次,不合理就可以开始优化了,例如上图一所有的item都是绿色的 很明显是经过了二度绘制 然后看一下底部item是灰色 经过了一次绘制 检查下来可以发现是因为 没有 去除 windowBackGround 所以我们设法去除windowsBackGround即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值