Android使用View Inspector分析Overdraw

版权声明:可直接转载,但转载时请标明本文的链接。 https://blog.csdn.net/GeenyH/article/details/82903338

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的层级情况。

日常开发中,为了查看界面是否出现过度绘制,我们打开安卓手机开发者选项的显示过度绘制选项
设置界面

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

开启设置选项后,界面就会显示绘制对应的色块

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

  1. 运行我们调试的APP

  2. 打开Android Studio的Tools菜单
    找到Layout Inspector

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

  4. 稍后就能得到分析结果了
    左边是View的层次,中间是屏幕内容,右边是View的各种属性

猜你喜欢

转载自blog.csdn.net/GeenyH/article/details/82903338