Android中的帧动画?

时间:2010-10-12 04:41:00

标签: android animation event-handling effects

我正在使用帧动画来显示一些图像。但它只在按钮动作中起作用。我想在程序启动时调用此函数。如何通过按钮实现这一目标?

我将以下代码用于动画:

public class FrameAnimationActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setupButton();
    }
    private void setupButton(){
        Button b = (Button)this.findViewById(R.id.startFAButtonId);
        b.setOnClickListener(
          new Button.OnClickListener(){
            public void onClick(View v){
                parentButtonClicked(v);
            }
          });
    }
    private void parentButtonClicked(View v){
        animate();
    }
    private void animate(){
        ImageView imgView = (ImageView)findViewById(R.id.imageView);
        imgView.setVisibility(ImageView.VISIBLE);
        imgView.setBackgroundResource(R.drawable.frame_animation);
        AnimationDrawable frameAnimation = (AnimationDrawable) imgView.getBackground();
        if (frameAnimation.isRunning()){
            frameAnimation.stop();
        }
        else{
            frameAnimation.stop();
            frameAnimation.start();
        }
    }
}
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
    <item android:drawable="@drawable/colored-ball1" android:duration="50" />
    <item android:drawable="@drawable/colored-ball2" android:duration="50" />
    <item android:drawable="@drawable/colored-ball3" android:duration="50" />
    <item android:drawable="@drawable/colored-ball4" android:duration="50" />
    <item android:drawable="@drawable/colored-ball5" android:duration="50" />
    <item android:drawable="@drawable/colored-ball6" android:duration="50" />
    <item android:drawable="@drawable/colored-ball7" android:duration="50" />
    <item android:drawable="@drawable/colored-ball8" android:duration="50" />
</animation-list>

2 个答案:

答案 0 :(得分:4)

在Android的文档中,您可以找到以下内容:

“重要的是要注意,在Activity的onCreate()方法中,无法调用在AnimationDrawable上调用的start()方法,因为AnimationDrawable尚未完全附加到窗口。如果要播放动画在不需要交互的情况下,您可能希望立即从Activity中的onWindowFocusChanged()方法调用它,当Android将窗口置于焦点时将调用它。“

希望有所帮助!

答案 1 :(得分:3)

当您单击按钮时,唯一发生的事情是调用animate()方法。你有没有尝试过放置

animate();

onCreate()内并将其从parentButtonClicked(View v)中删除,以便在创建活动时调用动画,而不是按下按钮时?不明白为什么那对你不起作用。

然后你也会有一个无用的按钮。 :)