Android 开始逐帧动画

Android 开始逐帧动画,android,animation,Android,Animation,我有一个关于开始逐帧动画的基本问题 当我直接从代码中调用AnimationDrawable.start()方法时,它似乎不起作用 public void onCreate(Bundle savedInstanceState) { ... mAnimation.start(); ... } 但是如果我把这一行放在按钮的onClick()回调方法中,按buton键就会启动动画 为什么这一行在代码中不起作用 谢谢 代码: }需要注意的是,在活动的onCreate()

我有一个关于开始逐帧动画的基本问题

当我直接从代码中调用AnimationDrawable.start()方法时,它似乎不起作用

public void onCreate(Bundle savedInstanceState) {  
   ...  
   mAnimation.start();  
   ...  
}
但是如果我把这一行放在按钮的onClick()回调方法中,按buton键就会启动动画

为什么这一行在代码中不起作用

谢谢

代码:
}

需要注意的是,在活动的onCreate()方法期间,无法调用在AnimationDrawable上调用的start()方法,因为AnimationDrawable尚未完全连接到窗口。如果您希望立即播放动画,而不需要交互,那么您可能希望从活动中的onWindowFocusChanged()方法调用它,当Android将窗口调到焦点时,将调用该方法。 最后一页

要添加动画,您可以执行以下操作

<animation-list   android:id="@+id/my_animation" android:oneshot="false" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/frame1" android:duration="150" />
    <item android:drawable="@drawable/frame2" android:duration="150" />

 </animation-list>  

使用Runnable将start()消息插入消息队列,只需添加此LOC即可替换mFrameAnimation.start()

助手内部类:

class Starter implements Runnable {
        public void run() {
            mFrameAnimation.start();
        }
}

要仅在onCreate(…)中播放动画,请添加:


有例外吗?你能显示动画代码吗?没有例外。如果我将开始代码放在一个按钮中并单击该按钮,那么该代码将非常有效。我编辑了原始帖子以添加完整的动画代码。2010年9月的will示例效果良好。@OceanBlue如何检查动画是否完成..尝试将整个代码放入onStart()中。用onResume也试过了。两者都不起作用:-(不确定我做错了什么。添加回调视图(在我的例子中,动画是用xml定义的)类似于在应答中查看编辑的东西,添加回调视图,甚至将动画更改为xml而不是以编程方式,都不起作用。但是,当我放置start()时方法在按钮的回调方法中单击按钮,动画效果很好。相当神秘。奇怪,它对我有效。我称之为onStart()。我现在在另一台计算机上,没有访问代码的权限,但我会稍后再进行挖掘。有一件事你可以尝试-不设置背景,而是设置image src。Alex,感谢你花时间帮助我解决这个问题。我想我犯了一个非常基本的错误。当我使用XML逐帧动画时(而不是以编程方式),它根本不起作用。没有例外,就是不起作用。如果我解决了问题,我会在这里发布。NEways,谢谢!这适合我的情况(自定义对话框中的AnimationDrawable)它在对话框中对我不起作用,有人成功吗?重要的是要注意开始()在活动的onCreate()方法期间,无法调用在AnimationDrawable上调用的方法,因为AnimationDrawable尚未完全连接到窗口。如果要立即播放动画而不需要交互,则可能需要从onWindowFocusChanged()调用它方法,当Android使您的窗口成为焦点时将调用该方法。
<animation-list   android:id="@+id/my_animation" android:oneshot="false" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/frame1" android:duration="150" />
    <item android:drawable="@drawable/frame2" android:duration="150" />

 </animation-list>  
img.post(new Starter());
class Starter implements Runnable {
        public void run() {
            mFrameAnimation.start();
        }
}
ImageView mImageView=(ImageView) findViewById(R.id.image);          
mImageView.setBackgroundResource(R.anim.film);    
mFrameAnimation = (AnimationDrawable) mImageView.getBackground();    
mImageView.post(new Runnable(){    
    public void run(){    
        mFrameAnimation.start();        
}
});