Android使用View Inspector分析Overdraw

时间:2024-04-14 09:16:55

Overdraw是指屏幕上的一个像素由于图层的重叠,在于6.67ms内被重复绘制多次(16.67ms是每秒60帧每帧的耗时)。

关于如何避免Overdraw,这位老师写得不错,可以参考:
Android性能优化之如何避免Overdraw
文章里第一点提到【合理选择控件容器】,可能当时ConstraintLayout还没有被普用,作者提到了几个传统的ViewGroup的优缺点和建议用哪些。现在可以使用ConstraintLayout避免View的多层嵌套从而避免Overdraw,ConstraintLayout能做到一层嵌套里实现很复杂的UI,而且体验很不错。


进入主题吧。

当界面出现OverDraw时,APP视觉上的流畅性将会受到影响,且会造成性能的浪费。除了上面提到的如何避免,我们在解决已经出现的Overdraw问题时,也可以借助一些工具。Android Studio已经提供给我们了。

View Inspector或者Layout Inspector这个工具可以捕获调试中的Actvity的布局,帮助我们分析APP里View的层级情况。

日常开发中,为了查看界面是否出现过度绘制,我们打开安卓手机开发者选项的显示过度绘制选项
Android使用View Inspector分析Overdraw

随后去到我们想要查看的界面,会显示各种颜色块(关于过度绘制的颜色标识开头提到的文章里也有说明,来源应该也是官方的配图)

Android使用View Inspector分析Overdraw

接下来,我们使用Layout Inspector来分析界面的View层级情况。具体使用如下:

  1. 运行我们调试的APP

  2. 打开Android Studio的Tools菜单
    Android使用View Inspector分析Overdraw

  3. 选中正在调试的Activity
    Android使用View Inspector分析Overdraw
    每次只能选一个Activity,且在非root过的普通手机只能捕获debug模式下的APP,无法捕获第三方APP的View层(比如微信),但在虚拟机上是可以的,大概是虚拟机满足某些开发世界的属性。如果想监测第三方APP的View层结构,可以使用虚拟机或root过的安卓手机试试。

  4. 稍后就能得到分析结果了
    Android使用View Inspector分析Overdraw