Android 关于过度绘制的那些事儿 UI流畅度优化

检测方法

1.开发者选项 - 调试过度绘制

颜色说明
1.原色 – 没有被过度绘制 – 这部分的像素点只在屏幕上绘制了一次。
2.蓝色 – 1次过度绘制– 这部分的像素点只在屏幕上绘制了两次。
3.绿色 – 2次过度绘制 – 这部分的像素点只在屏幕上绘制了三次。
4.粉色 – 3次过度绘制 – 这部分的像素点只在屏幕上绘制了四次。
5.红色 – 4次过度绘制 – 这部分的像素点只在屏幕上绘制了五次。

ps:
1.「开发者选项」里面的「显示GPU视图更新」
可以用来观察别人的代码是调用了 RecyclerView 的 notifyItemChanged() 还是 notifyDataSetChanged()
2.「显示布局边界」
可以用来观察 Android 的某个页面是H5还是原生的。
3.「HWUI呈现模式分析」选「条形图」
可以看到渲染UI窗口每帧所花费的时间



2.Layout Inspector

在 Android studio 的 Tools 菜单栏下
在这里插入图片描述
从这个ContentFrameLayout下的这个ConstraintLayout,就是我写的这个Activity的根布局了。



3.ui automator viewer

在Android studio里面已经找不到入口,但是可以在这个目录「/Users/Yao/Library/Android/sdk/tools/bin/uiautomatorviewer」里面找到
在这里插入图片描述



Hierarchy View (已经被废弃了)

在这里插入图片描述
路径是:/Users/Yao/Library/Android/sdk/tools/monitor
原来的名字叫 Hierarchy Viewer,新版改成了叫 monitor
在这里插入图片描述
mac版本的monitor很坑,试了「jdk1.8.0_201.jdk」和「jdk1.8.0_211.jdk」都不行。
网上找了一下解决方案,说只认「jdk1.8.0_144.jdk」。果然如此。使用还得切换 java 环境!
在这里插入图片描述
官方建议改用 Layout Inspector
在这里插入图片描述


解决办法

详细案例讲解是没有的,这懒我偷了。记录自己几条经验。
1.自定义 View 的 onDraw 方法里,减少在 onDraw 方法里新建对象,比如说 Paint 对象。把能从变量抽取成属性的对象都抽取了。
2.onDraw 方法里的 clipPath 和 clipRect 这一套要会用。
3.降低布局嵌套层级。遇到复杂的布局页面,多使用 RelativeLayout 和 ConstraintLayout 替代多个 LinearLayout 叠加。
4.考虑使用 merge 替代 include,考虑使用 ViewStub
5.布局背景要尽量少设置,比如Fragment已经设置了background了,Activity就可以考虑不用设置了。
6.学习使用 AsyncLayoutInflater

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值