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掉才行,我剪掉一小条发现没有,不知道怎么回事了 )
Android性能优化Google课程翻译一:Render----OverDraw
原文地址:http://blog.csdn.net/zhjali123/article/details/45195147