Android框架动画被迫停止。需要它的理由

时间:2015-02-15 09:46:58

标签: java android android-animation

我有一个ImageView -

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageAnimation"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

用于Drawable文件夹中的帧动画的XML文件 animation_list.xml -

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">

    <item android:drawable="@drawable/path1" android:duration="210" />
    <item android:drawable="@drawable/path2" android:duration="210" />
    <item android:drawable="@drawable/path3" android:duration="210" />

</animation-list>

我在onCreate中有动画的Java代码 -

ImageView imageAnimation = (ImageView)findViewById(R.id.imageAnimation);

imageAnimation.setBackgroundResource(R.drawable.animation_list);

AnimationDrawable frameAnimation = (AnimationDrawable)imageAnimation.getBackground();


frameAnimation.start();

它被迫停止了。可能是什么原因?

在调试时,这一行 -

imageAnimation.setBackgroundResource(R.drawable.animation_list);

显示错误,线程退出未捕获的异常 java.lang.OutOfMemoryError:位图大小超过VM预算

3 个答案:

答案 0 :(得分:1)

行 你无法在onCreate()

中启动动画

尝试覆盖onWindowFocusChanged,如下所示:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
     super.onWindowFocusChanged(hasFocus);
     frameAnimation.start();
 }

答案 1 :(得分:1)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView imageAnimation = (ImageView)findViewById(R.id.imageAnimation);

    imageAnimation.setImageDrawable(getResources().getDrawable(R.drawable.animation_list));

    AnimationDrawable frameAnimation = (AnimationDrawable)imageAnimation.getBackground();

    frameAnimation = (AnimationDrawable) imageAnimation.getBackground();

    frameAnimation.start();
}

答案 2 :(得分:0)

问题是我用于动画的图像太大,每个都大于5MB。缩小图像尺寸,它可以工作。