未找到资源异常将可绘制动画加载到图像视图中

时间:2014-06-15 01:50:18

标签: java android xml animation

我正在尝试为我在活动中用作背景的图像视图设置动画,但是在加载活动时应用程序崩溃了。所有图像和.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

2 个答案:

答案 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();
}