我有一个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预算
答案 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。缩小图像尺寸,它可以工作。