Я получаю эту ошибку все время. И как я вижу, на stackoverflow.com уже много вопросов, но, к сожалению, я не нахожу подходящих мне ответов.
У меня есть 60 изображений PNG (всего 2,5 МБ), которые я хотел бы поместить в анимацию.
Пробовал тремя разными способами.
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>
Джава
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.
Может быть у кого-нибудь есть альтернатива покадровой анимации? Если да, дайте ссылку на любую витрину.