Android性能优化Google课程翻译一:Render----OverDraw

时间:2021-03-20 05:55:22

Context:

继续上述文章,我们已经知道了如何收集信息找到OverDraw。现在,我们要如何解决呢?

方法:

  背景色:

1.去掉多余的背景色:

在onCreate()方法中加入:getWindow().setBackgroundDrawable(null);

(我这里北京刚开始是不透明opaque)

2.找到底层View的背景色然后去掉。

Clip剪切:

Android的系统会对重叠的View进行剪切,只计算显示的部分。然而这个特性并没有很好地拓展到自定义View中,所以你需要自己做些处理。例如微软自带的游戏红心大战,叠起来的扑克牌,只有第一张牌全露出,而且他的只露出数字的竖条。

1.Canvas.clipRect(RectF rect)

调用该方法后,rect矩形之外的区域就不会再进行绘制。(哦吼吼!太给力了)

2.Canvas.quickRect(RectF rect, EdgeType type) 

用来判断,rect与当前剪切区域是否相交,不想交返回ture;


(必须把底层那个区域整个View给clip掉才行,我剪掉一小条发现没有,不知道怎么回事了 )