Строка XML-файла #35: ошибка надувания класса <unknown> - слишком много изображений для анимации [android]

У меня есть анимация рисования кошачьего прыжка (он состоит из 5 отдельных загружаемых изображений), вот анимация для XML:

<?xml version="1.0" encoding="utf-8"?>
<animation-list      xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cat_page_4_animation" android:oneshot="true">
<item android:drawable="@drawable/page_4_kitten_jumping1"    android:duration="250" />
<item android:drawable="@drawable/page_4_kitten_jumping2" android:duration="250" />
<item android:drawable="@drawable/page_4_kitten_jumping3" android:duration="250" />
<item android:drawable="@drawable/page_4_kitten_jumping4" android:duration="250" />
<item android:drawable="@drawable/page_4_kitten_jumping5" android:duration="250" />
<item android:drawable="@drawable/page_4_kitten_jumping1" android:duration="250" />

Я подозреваю, что проблема заключается в анимации - в ней слишком много изображений, при первом запуске активности происходит сбой, я нажимаю ОК, она запускается!

Ошибка, которую я вижу при первом сбое, такова:

process: nis.animation_door, PID: 24446
java.lang.OutOfMemoryError
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:429)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:856)
        at android.content.res.Resources.loadDrawable(Resources.java:2129)
        at android.content.res.Resources.getDrawable(Resources.java:708)
        at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:963)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:893)
        at android.content.res.Resources.loadDrawable(Resources.java:2111)
        at android.content.res.Resources.getDrawable(Resources.java:708)
        at android.view.View.setBackgroundResource(View.java:15451)
        at nis.animation_door.Page5.onCreate(Page5.java:31)

Код:

    protected void onCreate(Bundle savedInstanceState) {
    Toast.makeText(Page5.this, " page 5 onCreate", Toast.LENGTH_SHORT).show();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.page5);

    forward = (ImageView)findViewById(R.id.to_page_6);
    backward = (ImageView)findViewById(R.id.to_page_4);


    cat_jump = (ImageView)findViewById(R.id.cat_jump);
    cat_jump.setBackgroundResource(R.drawable.page_5_cat_jumping);

    final AnimationDrawable frameAnimation = (AnimationDrawable) cat_jump.getBackground();


    cat_jump.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            frameAnimation.start();
        }
    });

Фактическая строка, где это терпит крах, является cat.setBackgroundResource(). Но почему он запускается после сбоя?

0 ответов

Другие вопросы по тегам