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的层级情况。
日常开发中,为了查看界面是否出现过度绘制,我们打开安卓手机开发者选项的显示过度绘制选项
随后去到我们想要查看的界面,会显示各种颜色块(关于过度绘制的颜色标识开头提到的文章里也有说明,来源应该也是官方的