1

1 秒あたり 25 回スワップする必要がある 135 フレームのフレーム アニメーションがあります。フレームは、240 dpi の 700X1000 ピクセルです。私が抱えている問題は、XML アニメーション ファイルで 5 つ以上のフレームを定義するたびに、アプリケーションがクラッシュすることです。フレームは drawable フォルダーにあります。それらを drawable-xhdpi にコピーしようとしましたが、これで問題は解決しませんでした。

ありがとう、サイモン

4

3 に答える 3

1

このエラーは、より多くのメモリを使用しようとしていることを明確に示しています。これは、画像サイズを直接指しています。そのため、使用するメモリを少なくするには、画像のサイズを変更する必要があります。この理由で使用できるのはBitmapFactory.Optionです。または、手動で画像のサイズを変更して、すべてのニーズに合うように注意してください.

ヒープ サイズは、実行するアプリケーションに割り当てられるメモリの量です。Android アプリケーションのヒープ サイズは、デバイスの RAM によって決まります。たとえば、デバイスに 179 MB の RAM がある場合、Android アプリケーションは 18 MB のヒープ サイズのみを取得します。

詳しくはこちらをご覧ください。大きなビットマップを効率的にロードする方法の詳細については、こちらを参照してください。

于 2012-12-31T12:02:42.310 に答える
1

画像をロードすると、32MB または 64MB のすべてのヒープ メモリ (アプリケーションが利用可能なメモリ) を消費するという問題。画像は、ARGB のビットマップ (ピクセルあたり 4 バイト) としてヒープに読み込まれます。アニメーション イメージをサブサンプリングしてみてください。アニメーションのサイズは 135*700*1000*4 バイト = 360.5 MB です。

画像のサブサンプリングを設定できるパラメーターinSampleSizeを持つ BitmapFactory.Options opts でメソッドdecodeResourceを使用できます。また、画像の透明度が必要ない場合は、パラメーターinPreferredConfigを使用して ARGB_8888 の代わりに RGB_565 を設定できます。

于 2012-12-31T12:03:05.520 に答える
0

スタックトレースが示すように、OutOfMemoryエラーが発生しています。フレームの解像度が高く、フレーム数も多いため、この例外が発生します。

于 2012-12-31T11:58:27.400 に答える