3

如果您总是必须绘制相同的矩形,使用静态位图或使用 canvas.drawRect() 会更快吗?

对于此示例,它们是四个分层的矩形。所以有一个填充颜色的边界,然后是中间颜色和填充颜色之间的边界。

所以四个paint.setColor() 命令和四个canvas.drawRect 命令或一个canvas.drawBitmap()。

4

2 回答 2

3

我强烈推荐drawRect()

位图占用大量内存,Out Of Memory如果使用不当可能会导致异常。

安卓写的:

位图占用大量内存,尤其是对于照片等丰富的图像。例如,Galaxy Nexus 上的相机可拍摄高达 2592x1936 像素(5 兆像素)的照片。如果使用的位图配置是 ARGB_8888(Android 2.3 及更高版本的默认配置),则将此图像加载到内存中大约需要 19MB 内存(2592*1936*4 字节),立即耗尽某些设备上的每个应用程序限制

防止头痛和意外崩溃。利用drawRect();

如果您定期为不同的对象进行这 4 次绘制,请考虑编写一个为您完成所有 4 次绘制的方法。因此,您不会造成大量重复。

例如:

public void DrawMyRect(Canvas canvas, int x, int y)
{
   canvas.drawRect(x, y ,x + 15, y + 40, paint);
   // Draw its line etc etc..
 }

或者,如果您确实要绘制位图,因为它确实具有以下优点:

请参阅 Android 的此史诗链接,了解如何正确使用位图

于 2012-07-06T15:37:50.250 回答
0

性能差异可能可以忽略不计。位图将使用更多内存,画布绘制调用将使用稍微更多的 CPU。如果您想减少调用而不需要位图的开销,您可能可以使用ShapeDrawable 。

于 2012-07-06T15:38:15.697 回答