Android 为什么逐帧动画不能正常工作?

Android 为什么逐帧动画不能正常工作?,android,animation,Android,Animation,我想展示一只会跳的鸟。我对那只鸟在不同的位置有不同的图像。我使用的是逐帧动画。它提供了找不到的运行时异常资源 这是我的密码 public class AnimationDrawableActivity extends Activity { ImageView im; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我想展示一只会跳的鸟。我对那只鸟在不同的位置有不同的图像。我使用的是逐帧动画。它提供了找不到的运行时异常资源

这是我的密码

public class AnimationDrawableActivity extends Activity {

    ImageView im;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.animation);

        im=(ImageView)findViewById(R.id.imageView_hostanimation);
        im.setBackgroundResource(R.drawable.spain_animation);
        AnimationDrawable frameAnimation = (AnimationDrawable) im.getBackground();
        frameAnimation.setCallback(im);
        frameAnimation.setVisible(true, true);

        frameAnimation.start();
    }
}
我在drawable mdpi->spain_animation.xml中的xml文件

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" >

    <animation-list
        android:id="@+id/testanimation" android:oneshot="false" >

        <item
            android:drawable="@drawable/icon" android:duration="150"/>
        <item
            android:drawable="@drawable/pokeslidebird1" android:duration="150"/>
        <item
            android:drawable="@drawable/pokeslidebird2" android:duration="150"/>
        <item
            android:drawable="@drawable/icon" android:duration="150"/>
        <item
            android:drawable="@drawable/pokeslidebird1" android:duration="150"/>
        <item
            android:drawable="@drawable/icon" android:duration="150"/>
    </animation-list>
</animated-rotate>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <ImageView
            android:id="@+id/imageView_hostanimation"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="56dp"
            android:layout_marginTop="70dp"
            android:src="@drawable/icon" >
        </ImageView>
    </RelativeLayout>

</RelativeLayout>

我知道您可以使用曲面视图,创建每个帧并按设定的间隔显示它们

您可以在此处了解SurfaceView:

我在这里学到了一些关于间隔/循环的好信息:

它讨论的是一个游戏循环,但是你可以将同样的知识应用到一个简单的动画中,我觉得这是一个非常好的教程

另一种方法是创建动画gif,并将其显示为视频


可能还有其他解决方案。。如果我想更多的话,我会尝试编辑它。

如果您有多个图像,并且希望以一定的间隔逐个显示它们,使它们看起来像动画,那么您应该使用逐帧动画

在这里,您将看到逐帧动画示例


plz为我提供链接,以便我可以使用曲面视图创建每个帧,并以设定的间隔显示它们。你知道这方面的任何教程或示例。非常感谢你的回答。先生,我如何在res-drawable中声明xml动画。它提供了未找到的运行时异常资源。我正在imageview中导入动画xml文件。我已修改了代码。请看一看。请纠正我。谢谢。请分享你的日志猫?要知道在哪一行发生异常,请检查这个完整的工作示例
11-23 12:45:35.070: ERROR/AndroidRuntime(517): Uncaught handler: thread main exiting due to uncaught exception
11-23 12:45:35.100: ERROR/AndroidRuntime(517): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.a3.activity/com.a3.activity.AnimationDrawableActivity}: android.content.res.Resources$NotFoundException: File res/drawable-mdpi/spain_animation.xml from drawable resource ID #0x7f020003
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.os.Looper.loop(Looper.java:123)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.app.ActivityThread.main(ActivityThread.java:4363)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at java.lang.reflect.Method.invokeNative(Native Method)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at java.lang.reflect.Method.invoke(Method.java:521)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at dalvik.system.NativeStart.main(Native Method)
11-23 12:45:35.100: ERROR/AndroidRuntime(517): Caused by: android.content.res.Resources$NotFoundException: File res/drawable-mdpi/spain_animation.xml from drawable resource ID #0x7f020003
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.content.res.Resources.loadDrawable(Resources.java:1693)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.content.res.Resources.getDrawable(Resources.java:580)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.view.View.setBackgroundResource(View.java:7186)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at com.a3.activity.AnimationDrawableActivity.onCreate(AnimationDrawableActivity.java:17)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     ... 11 more
11-23 12:45:35.100: ERROR/AndroidRuntime(517): Caused by: java.lang.NullPointerException
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.graphics.drawable.AnimatedRotateDrawable.inflate(AnimatedRotateDrawable.java:222)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     at android.content.res.Resources.loadDrawable(Resources.java:1690)
11-23 12:45:35.100: ERROR/AndroidRuntime(517):     ... 16 more