多数のビットマップを持つアニメーション

私はここで同様のスレッドを見たことがあるが、まだ十分な解決策を見つけることができませんでした。

私は最初のAndroidアプリを開発しており、大量の画像/ビットマップを使ってアニメーションを作成しようとしています。私は、フレームごとのアニメーションを再生するのが好きなビットマップのリストを持っています
画像の数が数から数百に変化する(現在はリソースからロードされている)

SurfaceViewを使用していて、画像をロードして描画するのに次のものを使用しています

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), res);
canvas.drawBitmap(bitmap, x, y, null);

私は2つの方法を試みた:

  1. すべての画像をプリロードしてメモリにキャッシュします。これは素晴らしいパフォーマンスをもたらします
    初期化に時間がかかり、大量のメモリが使用され、少量の画像に対してのみ動作します。

  2. イメージを1つずつデコードします。これは、パフォーマンスが低下し、CPU使用率が高くなる原因となります。

大きなリストのパフォーマンスを向上させる方法を探していますが、
デコードされたビットマップをキャッシュしたり、ビデオストリーム(無損失?)に変換してパフォーマンスを向上させる方法はありますか?

何か案は?

ベストアンサー

パフォーマンスについては、
最初に穴の画像のサイズをロードしないで、画像を読み込むときにサイズを小さくするには以下の方法を使用します。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = number; //reduce image size
Bitmap b =  BitmapFactory.decodeFile(image path, options);

また、現在のアニメーションの画像をすべてのアニメーションで読み込むのではなく読み込み、終了したアニメーションではなくスレッドで他のアニメーションを読み込みます。

ケース2の時間については、スレッドに画像を読み込み、すべての画像がロードされるまで

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です