1

現在、大量のビットマップを処理しているときに、いくつかのパフォーマンスの問題 (メモリ不足) に直面しています。これは修正可能な問題にすぎないため、次の方法を使用する際の違いを誰かが説明してくれるかどうか疑問に思っています。

画像を ImageView にロードするだけの場合は、通常次を使用します。

imageView.setImageDrawable(getResources.getDrawable(R.drawable.id));

事前にドローアブルをサンプリングしたい場合は、通常使用します(ここではサンプリングなし):

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.id);
imageView.setImageBitmap(bm);

私の質問は、パフォーマンスの最適化に関連しています。さまざまなドローアブル フォルダーを使用してできるだけ多くのドローアブルを提供する方がよいか (したがって、これらのドローアブルはさまざまなデバイスに必要な解像度にほぼ適合する)、高品質のドローアブルをサンプリングする方がよいかどうか疑問に思っています。setImageDrawable は内部で何をしていますか? サンプリングせずに、BitmapFactory を使用してリソースをデコードしますか? アプリの実際のサイズと、実行時の CPU およびメモリ負荷との間にはトレードオフがあるようです。

4

1 に答える 1

0

apk のサイズが気になる場合は、できるだけ多くのドローアブルを用意することは理想的な方法ではありません。ただし、ビットマップをデコードするときにサンプル サイズを渡すと、画面サイズに縮小され、必要なピクセルのみが得られるため、画面が小さい古い携帯電話では 8mp 画像をデコードする必要がないことを忘れないでください。

BitmapFactory.Optionsここを確認してください

于 2013-11-05T14:39:32.577 に答える