如果您总是必须绘制相同的矩形,使用静态位图或使用 canvas.drawRect() 会更快吗?
对于此示例,它们是四个分层的矩形。所以有一个填充颜色的边界,然后是中间颜色和填充颜色之间的边界。
所以四个paint.setColor() 命令和四个canvas.drawRect 命令或一个canvas.drawBitmap()。
如果您总是必须绘制相同的矩形,使用静态位图或使用 canvas.drawRect() 会更快吗?
对于此示例,它们是四个分层的矩形。所以有一个填充颜色的边界,然后是中间颜色和填充颜色之间的边界。
所以四个paint.setColor() 命令和四个canvas.drawRect 命令或一个canvas.drawBitmap()。
我强烈推荐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..
}
或者,如果您确实要绘制位图,因为它确实具有以下优点:
性能差异可能可以忽略不计。位图将使用更多内存,画布绘制调用将使用稍微更多的 CPU。如果您想减少调用而不需要位图的开销,您可能可以使用ShapeDrawable 。