私はいつもこのエラーを受け取ります。ご覧のとおり、stackoverflow.comにはすでに多くの質問がありますが、残念ながら、自分に合った答えは見つかりません。
アニメーションに入れたいPNG画像が60枚(全部で2,5MB)あります。
私は3つの異なる方法で試しました。
1
mAnimation = new AnimationDrawable();
mAnimation.addFrame((BitmapDrawable)getResources().getDrawable(R.drawable.yawning_00001), FPS_12);
...
mAnimation.addFrame((BitmapDrawable)getResources().getDrawable(R.drawable.yawning_00063), FPS_12);
mAnimation.start();
2
XML
<animation-list android:oneshot="true">
<item android:drawable="@drawable/yawning_00001" android:duration="83" />
...
<item android:drawable="@drawable/yawning_00063" android:duration="83" />
</animation-list>
Java
ImageView img = (ImageView)findViewById(R.id.animation);
img.setBackgroundResource(R.drawable.yawning);
AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();
frameAnimation.start();
3
ImageViewを拡張するクラスを使用します(ここでは重要なものだけを示します)
public void loadAnimation(String prefix, int nframes) {
mBitmapList.clear();
for (int x = 0; x < nframes; x++) {
String zeros = "000";
if (x < 10) {
zeros += "0";
}
String name = prefix + "_" + zeros + x;
Log.d(TAG, "loading animation frame: " + name);
int res_id = mContext.getResources().getIdentifier(name, "drawable", mContext.getPackageName());
d = (BitmapDrawable) mContext.getResources().getDrawable(res_id);
mBitmapList.add(d.getBitmap());
}
}
すべての場合で同じエラーが発生します...15枚の画像を読み込んだ後のすべてです。
E/AndroidRuntime(1591): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
これがAndroidでもフレームアニメーションが可能かどうか疑問に思っています。
誰かがフレームごとのアニメーションに代わるものを持っているかもしれませんか?はいの場合は、ショーケースにリンクしてください。