TOP

视图优化

追踪过度绘制

Show GPU Overdraw工具

在手机的开发者选项里打开“Show GPU Overdraw toggle this”,这时打开手机,应用上就会出现一层颜色蒙版,其中:

没有颜色: 意味着没有overdraw。像素只画了一次。
蓝色: 意味着overdraw 1倍。像素绘制了两次。大片的蓝色还是可以接受的(若整个窗口是蓝色的,可以摆脱一层)。
绿色: 意味着overdraw 2倍。像素绘制了三次。中等大小的绿色区域是可以接受的但你应该尝试优化、减少它们。
浅红: 意味着overdraw 3倍。像素绘制了四次,小范围可以接受。
深红: 意味着overdraw 4倍。像素绘制了五次或者更多。这是错误的,要修复它们。
GPU Profiler
蓝色: 表示测量绘制时间
红色: 表示执行时间、
橙色: 表示处理时间

避免UI卡顿:

  • 避免在onDraw中创建对象
  • 使用对象池
  • 减少View层级
  • 避免在UI顶层使用RelativeLayout-------其measure两次
  • 自定义控件控制绘制的复杂度

优化过度绘制

降低View层级

  • RelativeLayout代替LinearLayout

    使用merge标签,不需要指定父容器
    
  • 不必要的背景

    去掉window默认背景
    getWindow().setBackgroundDrawable(null);
    去掉不必要的背景
    
  • ClipRect和QuickReject
      ClipRect 只绘制和渲染指定的区域
      QuickReject  节约GPU资源
    
  • ViewStub 占位符
  • .9图用作背景





posted @ 2015-12-11 01:46  星空守候  阅读(396)  评论(0编辑  收藏  举报