だからここに取引があります、私はすべての質問とリンクをオンラインで検索しましたが、どれも役に立ちません。スプラッシュ画面用に.jpg形式のアニメーションの120フレームがあります。jpegがメモリ上でビットマップに変換されることを理解しているので、OutOfMemoryErrorが発生します。アニメーション化できる最大フレーム数は10です。このフレームごとにこの方法を実行する方法はありますか、それとも別の方法を試す必要がありますか。これが私のコードです:
final AnimationDrawable anim = new AnimationDrawable();
anim.setOneShot(true);
for (int i = 1; i <= 120; i++)
{
Drawable logo = getResources().getDrawable(getResources()
.getIdentifier("l"+i, "drawable", getPackageName()));
anim.addFrame(logo, 50);
if (i % 3 == 0)
{
System.gc();
}
}
ImageView myImageView = (ImageView) findViewById(R.id.SplashImageView);
myImageView.setBackgroundDrawable(anim);
myImageView.post(new Runnable()
{
public void run()
{
anim.start();
}
});
120個のjpegを、「l」プレフィックスが付いたドローアブルフォルダの下に配置しました(例:l1、l2など)。私は3jpegごとにガベージコレクションを行いますが、それでは何も起こりません。