wxpython drawtext设置绘制区域_Android UI绘制优化方案

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

(1)什么是过度绘制

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

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

a、自定义控件中,ondraw做了过多重复绘制。

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

(3)过度绘制查看工具

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

81e40e9479e4bc0ad2ee2ef22b55a5ed.png

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、Androidsdkoolsmonitor.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重复工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值