如果你总是需要绘制相同的矩形,使用静态位图或canvas.drawRect()更快?
对于此示例,是四层矩形。所以一个填充颜色的边界,然后是中间颜色和填充颜色之间的边界。
所以有四个paint.setColor()命令和四个canvas.drawRect命令或一个canvas.drawBitmap()。
答案 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。