热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidUI绘制优化方案

过度绘制优化(主要减少GPU工作量)(1)什么是过度绘制GPU的绘制过程,就跟刷墙一样一层层的进行,16ms刷一次安卓绘图设置。这样就会造成图层覆盖的现象,即无用的图层还被绘制在底层,造成不必要的浪费

过度绘制优化(主要减少GPU工作量)(1)什么是过度绘制

GPU的绘制过程,就跟刷墙一样一层层的进行,16ms刷一次安卓绘图设置。这样就会造成图层覆盖的现象,即无用的图层还被绘制在底层,造成不必要的浪费。

(2)GPU过度绘制的几种情况

a、自定义控件中,ondraw做了过多重复绘制安卓绘图设置

b、布局层次太深,重叠性太强安卓绘图设置。用户看不到的区域,GPU也会渲染,导致耗时增加。

(3)过度绘制查看工具

查看方法:开发者选项-》Profile GPU rendering/调试GPU过度绘制

Android UI绘制优化方案GPU过度绘制查看工具

其中颜色代表渲染的图层情况,分别代表1层、2层、3层、4层安卓绘图设置

蓝色:过度绘制一次安卓绘图设置,无过度绘制

淡绿:过度绘制两次

淡红:过度绘制三次

深红:过度绘制四次

以上代表了4种不同程度overdraw情况,我们的目标就是尽量减少红色overdraw,看到更多的蓝色区域安卓绘图设置

(4)处理方案

1、减少背景重复

注意主题中的设置:

a、去掉单个activity的主题设置的属性:

可以在setContentView之前

getWindow().setBackgroundDrawable(null);b、去掉所有activity主题设置中的属性:

直接在styles.xml中设置

@null非业务需要,不要去设置背景安卓绘图设置

2、绘图时使用裁减减少控件之间的重合部分

3、Android7.0之后系统做出的优化:invalidate()不再执行测量和布局动作

布局的优化(主要减少CPU工作量)(1)常用工具

1、Android/sdk/tools/bin/uiautomatorviewer.bat

2、Android\sdk\tools\monitor.bat

3、Device Monitor窗口中Hierarchy view

三个点也是代表着View的Measure, Layout和Draw安卓绘图设置

绿: 表示该View的此项性能比该View Tree中超过50%的View都要快;例如,代表Measure的是绿点,意味着这个视图的测量时间快于树中的视图对象的50%安卓绘图设置

黄: 表示该View的此项性能比该View Tree中超过50%的View都要慢;

红: 表示该View的此项性能是View Tree中最慢的;安卓绘图设置

(2)注意点

1.能在一个平面显示的内容安卓绘图设置,尽量只用一个容器,避免嵌套

2.尽可能把相同的容器合并merge

3.能复用的代码安卓绘图设置,用include处理,可以减少GPU重复工作


推荐阅读
author-avatar
心在天堂590120_993_292
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有