Android画布——绘制一个矩形或矩形的图片

Android画布——绘制一个矩形或矩形的图片,android,performance,canvas,Android,Performance,Canvas,如果您总是必须绘制相同的矩形,那么使用静态位图或canvas.drawRect()会更快 在本例中,矩形为四层矩形。一个填充颜色的边界,然后是中间颜色和填充颜色之间的边界 因此,四个paint.setColor()命令和四个canvas.drawRect命令或一个canvas.drawBitmap()。我强烈建议drawRect() 位图占用大量内存,如果使用不正确,可能导致内存不足异常 android编写: 位图占用大量内存,特别是对于照片等丰富的图像。例如,Galaxy Nexus上的相机最

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

在本例中,矩形为四层矩形。一个填充颜色的边界,然后是中间颜色和填充颜色之间的边界


因此,四个paint.setColor()命令和四个canvas.drawRect命令或一个canvas.drawBitmap()。

我强烈建议
drawRect()

位图占用大量内存,如果使用不正确,可能导致
内存不足
异常

android编写:

位图占用大量内存,特别是对于照片等丰富的图像。例如,Galaxy Nexus上的相机最多可拍摄2592x1936像素(500万像素)的照片。如果使用的位图配置是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。如果您想减少调用而不需要位图的开销,您可能可以使用位图。

这样如何:我得到的响应不一。我的图像足够小,不应该有内存错误。我现在只在乎表现。将有六个32x32图像。添加到我的答案中。如果您使用的是小图像,那么应该不会有什么问题。两者都不会有明确的绩效提升。我这里有一个应用程序,它在不到一秒钟的时间内绘制了数百条线条/形状等。如果你使用少量的形状,我看不到任何性能问题。如果你使用位图,我建议你还是遵循链接,以确保你能有效地使用它。@Nathantorquist。更不用说,位图的大小是固定的,所以如果你调整它的大小,它可能会看起来更糟。DrawRect清晰、清晰,可以在不损失外观的情况下轻松更改,以适合您的形状/需要。不会对位图产生任何效果。一切都是直接绘制的,无需缩放。@NathanTornquist然后选择其中之一。所需的规模不会导致任何性能损失或内存溢出。如果你看的是300x300张图片,它们会耗尽你的记忆。但事实并非如此。因此,一种方法没有真正的缺点。但没有真正的收益,除非您声明代码行数减少。:)如果确实计时,则在不使用油漆的情况下计时。setColor();你不应该在绘画程序中改变你的绘画,你应该有四种绘画。对每个矩形使用每个。或者重复使用它们,如果你画相同的颜色。