我目前在Android中学习动画,这是我在手册中阅读的内容:
一个常见的错误是每次创建一个新的Paint或一个新的Path 调用渲染方法。这会强制垃圾收集器运行 更频繁地并且还绕过硬件中的缓存和优化 管道
和
使用复杂的形状,路径和圆圈进行渲染 纹理面具。每次创建或修改路径时,硬件 管道创建了一个新的掩码,这可能很昂贵。
在我的应用程序中,我计划不断绘制数十个圈子,我希望尽可能优化这个过程。我有一个方法Canvas.drawCircle(X, Y, RADIUS, Paint)
,我可以提供预定义的Paint
但不是预定义的Path
。
问题是:如果我可以提供预定义的Path
以及Paint
,那会改善渲染性能吗?如果是,我应该使用哪种方法或技术代替drawCircle
?
答案 0 :(得分:1)
您根本没有使用路径,因此不必担心预定义路径。 您不需要优化代码,除非您看到它变慢,但情况并非如此。 一种可能的优化是,如果您绘制多次相同半径和相同绘制的圆(但在不同位置),将其渲染一次到位图,然后在每个位置绘制该位图。如果这样做,请不要在onDraw方法中准备位图,只有在必须更改时才准备它。