2011-11-23 110 views
1

我想展示一只跳跃的小鸟。我有不同位置的那只鸟的不同图像。我为此使用了逐帧动画。它没有找到运行时异常资源。为什么逐帧动画无法正常工作?

这里是我的代码

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

在绘制-mdpi->我的XML文件spain_animation.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> 

这里是布局 - > animation.xml

<?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> 

请帮助我,我做错了什么?

这里是我的日志CAT->

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 

回答

0

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

在这里你可以找到Frame by Frame动画的例子。

http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

+0

先生我该如何声明xml动画res-drawable.It给运行时异常资源找不到。我m导入动画xml文件在imageview中。 – picaso

+0

请在你的问题中分享你当前的代码。 – Arslan

+0

我修改了我的代码plz看看。并纠正我。谢谢 – picaso

0

我知道你可以使用从表面上看,并在每个框架,并在设定的时间间隔显示出来..

您可以了解这里surfaceviews: http://developer.android.com/reference/android/view/SurfaceView.html

,我已经学会了在间隔一些好的信息/循环位置:http://obviam.net/index.php/a-very-basic-the-game-loop-for-android/

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

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

Android: How do a display a large animated gif given a url?

可能有其他的解决方案以及..我会尝试,如果我想的更多的编辑。

+0

PLZ提供我的链接,这样我可以使用的表面视图和创建每一帧,并在设定的时间间隔显示它们。你是否知道任何教程或例子。谢谢你的回应。 – picaso

+0

我已经更新了答案以添加更多信息。 – snapfractalpop