0

我有猫跳跃的动画(它由正在加载的 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" />

我怀疑动画是问题所在 - 它有太多图像,我第一次启动活动时它崩溃了,我按 OK,它确实启动了!

我在第一次崩溃时看到的错误是:

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()。但是为什么它会在崩溃后启动呢?

4

0 回答 0