我正在尝试为我在活动中用作背景的图像视图设置动画,但是在加载活动时应用程序崩溃了。所有图像和.xml文件都在drawable-hdpi文件夹中,所以我不确定为什么它找不到它。如果有更好的方法将动画设置为活动背景,请告诉我。
以下是动画的.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selected" android:oneshot="false">
<item android:drawable="@drawable/bow1" android:duration="60" />
<item android:drawable="@drawable/bow2" android:duration="60" />
<item android:drawable="@drawable/bow3" android:duration="60" />
<item android:drawable="@drawable/bow4" android:duration="60" />
<item android:drawable="@drawable/bow5" android:duration="60" />
<item android:drawable="@drawable/bow6" android:duration="60" />
<item android:drawable="@drawable/bow7" android:duration="60" />
<item android:drawable="@drawable/bow8" android:duration="60" />
<item android:drawable="@drawable/bow9" android:duration="60" />
</animation-list>
下面是我用来尝试运行它的代码:
public class MainActivity extends Activity {
ImageView bground;
AnimationDrawable bganim;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_main);
bground = (ImageView)findViewById(R.id.background);
bground.setBackgroundResource(R.drawable.bowanimbg);
bganim = (AnimationDrawable) bground.getBackground();
bganim.start();
}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lucidity/com.example.lucidity.MainActivity}: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi/bowanimbg.xml from drawable resource ID #0x7f02000b
答案 0 :(得分:1)
我会把它放在评论中,但不幸的是我没有足够高的代表。所以我会尽力解决问题。
您提到所有图片都出现在drawable-hdpi
文件夹中。但是,如果您发现错误,则看起来它正在res/drawable-xxhdpi
文件夹中搜索该文件。我建议将.xml
文件从-hdpi
文件夹复制到-xxhdpi
文件夹,看看它是否有效!
答案 1 :(得分:-1)
修正了!!由于它根本没有加载动画,所以我决定制作一个onWindowFocusedChanged方法,以便在活动加载后加载动画。我还将imageview的背景设置为.xml中的bowanimbg.xml文件,我最初认为这不是必需的。
public void onWindowFocusChanged(boolean hasFocus) {
bground = (ImageView)findViewById(R.id.background);
bground.setImageResource(R.drawable.bowanimbg);
bganim = (AnimationDrawable) bground.getBackground();
if (hasFocus) {
bganim.start();
}
else {
bganim.stop();
}