常に同じ長方形を描画する必要がある場合は、静的ビットマップまたはcanvas.drawRect()を使用して描画する方が高速ですか?
この例では、は4つの層状の長方形です。つまり、塗りつぶしの色のボーダー、次に中間色と塗りつぶしの色の間のボーダーです。
したがって、4つのpaint.setColor()コマンドと4つのcanvas.drawRectコマンドまたは1つのcanvas.drawBitmap()。
常に同じ長方形を描画する必要がある場合は、静的ビットマップまたはcanvas.drawRect()を使用して描画する方が高速ですか?
この例では、は4つの層状の長方形です。つまり、塗りつぶしの色のボーダー、次に中間色と塗りつぶしの色の間のボーダーです。
したがって、4つのpaint.setColor()コマンドと4つのcanvas.drawRectコマンドまたは1つの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を使用できます。