用预定义的`Path`优化`Canvas.drawCircle`

时间:2015-01-15 12:33:03

标签: android performance animation android-canvas

我目前在Android中学习动画,这是我在手册中阅读的内容:

  

一个常见的错误是每次创建一个新的Paint或一个新的Path   调用渲染方法。这会强制垃圾收集器运行   更频繁地并且还绕过硬件中的缓存和优化   管道

  

使用复杂的形状,路径和圆圈进行渲染   纹理面具。每次创建或修改路径时,硬件   管道创建了一个新的掩码,这可能很昂贵。

在我的应用程序中,我计划不断绘制数十个圈子,我希望尽可能优化这个过程。我有一个方法Canvas.drawCircle(X, Y, RADIUS, Paint),我可以提供预定义的Paint但不是预定义的Path

问题是:如果我可以提供预定义的Path以及Paint,那会改善渲染性能吗?如果是,我应该使用哪种方法或技术代替drawCircle

1 个答案:

答案 0 :(得分:1)

您根本没有使用路径,因此不必担心预定义路径。 您不需要优化代码,除非您看到它变慢,但情况并非如此。 一种可能的优化是,如果您绘制多次相同半径和相同绘制的圆(但在不同位置),将其渲染一次到位图,然后在每个位置绘制该位图。如果这样做,请不要在onDraw方法中准备位图,只有在必须更改时才准备它。