Android布局优化——减少过度绘制

标签(空格分隔): 翻译 android 性能优化

原文:Optimizing Layouts in Android – Reducing Overdraw

你有一个伟大的理想,让多用户启动你的应用。然而,你却听到用户投诉应用反应迟钝以致难以使用。伤心的表现。

有这样的一个步骤去改善应用的渲染时间:查看调度GPU过度绘制工具

什么是过度绘制:

过度绘制一般发生在应用要求系统在已有的视图上绘制别的视图。调试工具通过在屏幕上覆盖不同的颜色来划分该像素被重绘了几次。

如何打开调试工具

  1. 进入系统设置
  2. 点击开发者选项
  3. 选择调度GPU过度绘制
  4. 在弹出的对话框中选择显示过度绘制区域

你将注意到屏幕改变了颜色,不要惊慌。进入到你的应用,这时我们就可以一步一步弄明白如何改善布局。

不同颜色代表的意义

五种颜色分别代表着:

原始色(即没有发生改变)——代表屏幕上该像素块仅被绘制了一次。

蓝色(我感觉更像淡紫)——重绘1x——像素块被被绘制了两次。

绿色——重绘2x——绘制了三次。

粉色——重绘3x——绘制了四次。

红色——重绘4x——绘制了五次。

Android布局优化——减少过度绘制_第1张图片
颜色表

能通过我的应用(原作者的)Book Dash application,初始布局中有很多过度绘制的地方。

如何修复过度绘制

在上面的粟子中,移除了RelaytiveLayout 的背景色并通过theme 设置背景。

原来的:


现在的:


修改布局得到以下结果:

Android布局优化——减少过度绘制_第2张图片

如你所见,过度绘制减轻,红色区域减少

可以进一步改善,达到以原色和少量的蓝色(淡紫色)为目标。有此过度绘制是必不可少的。(很多布局为了提高多样化控件,多会导致过度绘制,两者之间需要根据实际情况衡量)

并不是所有的过度绘制都是设置背景导致的,其它情况也能导致过度绘制,例如,复杂的View叠加。

你的目标应该是低于 过度绘制2x(绿色)

通过Hierarchy Viewer或GL Tracer可查View层次关系,分析过度绘制原因。

……

你可能感兴趣的:(Android布局优化——减少过度绘制)