キャンバスにスケーリングされたビットマップをペイントしたい(ビットマップとビューサイズに基づく)。問題は、ビットマップをペイントする前にキャンバスを拡大縮小すると、次のようになることです。
canvas.scale(1.5f,1.5f);
canvas.drawBitmap(mBitmap, 0, 0, paint);
結果は次のとおりです。
しかし、キャンバスをスケーリングする代わりに、ビットマップをスケーリングする場合は、次のようになります。
Bitmap scaled = Bitmap.createScaledBitmap(
mBitmap, bitmapWidth, bitmapHeight,
true);
canvas.drawBitmap(scaledBitmap, 0, 0, paint);
結果ははるかに優れています:
問題は、ビットマップがかなり大きく、元のビットマップとスケーリングされたビットマップの両方をメモリに保持すると問題が発生する可能性があることです。
ビットマップまたはビューの境界が変更されるたびにスケーリングされたビットマップを作成せずに2番目の結果を取得する方法はありますか?