Android Canvas - 绘制矩形或矩形图片

时间:2012-07-06 15:30:33

标签: android performance canvas

如果你总是需要绘制相同的矩形,使用静态位图或canvas.drawRect()更快?

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

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

2 个答案:

答案 0 :(得分:3)

我强烈推荐drawRect()

位图会占用大量内存,如果使用不正确,可能导致Out Of Memory例外。

由android编写:

  

Bitmaps会占用大量内存,尤其是对于像照片这样的丰富图像。例如,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..
 }

或者,如果你去绘制位图,因为它确实有优势:

See this epic Link by Android, on how to properly use Bitmaps

答案 1 :(得分:0)

性能差异可能微不足道。位图将使用更多内存,canvas绘制调用将使用更多的CPU。如果你想在没有位图开销的情况下减少调用,你可以使用ShapeDrawable