0

大きな画像セットでアニメーションを実行しようとして、FrameAnimation を試しましたが、大きな画像セットでメモリ不足の例外が見つかりまし
これはアニメーションを実現するのに役立ちますが、画像の読み込みに時間がかかるためスムーズではありません。次に、アニメーションを開始する前にビットマップをデコードすることにしました (resID の代わりにビットマップを ImageView に渡します)。これにより、スムーズなアニメーションが得られました。ただし、リソースからビットマップをデコードするには時間がかかります。

同じことを行うためのより良いアプローチはありますか? 任意の提案をいただければ幸いです。

画像の詳細

画像の総数 = 30;

画像の寸法 = 1000x 720;

サイズ=180kb

私が実行しているデバイス

メーカー:モトローラ

モデル: MZ601

Android バージョン: 3.0

ビットマップをデコードするには

    Bitmap mBitmap=BitmapFactory.decodeResource(getResources(),resID);
    int bitmapSize= mBitmap.getRowBytes()*mBitmap.getHeight())

おおよその bitmapSize 値は 3000000 (バイト単位である可能性があります) であり、キロバイト 23437.5kb に変換されます。

元の png ファイルは 180kb ですが、デコードすると 2MB 近くのデータが必要になります。なんで?

ビットマップのサイズを分析する際に何か間違ったことをしていますか?

はいの場合、デコードビットマップのサイズを取得する方法は?

いいえの場合、なぜ大きなスペースを取っているのか説明できる人はいますか?

注:ビットマップはデバイスの画面サイズ(1280 x 752)にぴったりなので、拡大縮小したくありません。

ありがとう

貴重な提案と解決策を事前に。

4

1 に答える 1

1

元の png ファイルは 180kb ですが、デコードすると 2MB 近くのデータが必要になります。なんで?

3 つのカラー チャネル (RGB) で 1 ピクセルあたり 1 バイトと仮定すると、バイト サイズ = 3X(1000X720)/(1024*1024) = 2.05 MB 約。

このような処理には、プレーンなビットマップの読み込みで到達できる限界があります。そのため、ビデオ コーデックが存在します。

于 2013-01-11T10:59:33.213 に答える