我正在使用帧动画来显示一些图像。但它只在按钮动作中起作用。我想在程序启动时调用此函数。如何通过按钮实现这一目标?
我将以下代码用于动画:
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>
答案 0 :(得分:4)
在Android的文档中,您可以找到以下内容:
“重要的是要注意,在Activity的onCreate()方法中,无法调用在AnimationDrawable上调用的start()方法,因为AnimationDrawable尚未完全附加到窗口。如果要播放动画在不需要交互的情况下,您可能希望立即从Activity中的onWindowFocusChanged()方法调用它,当Android将窗口置于焦点时将调用它。“
希望有所帮助!
答案 1 :(得分:3)
当您单击按钮时,唯一发生的事情是调用animate()
方法。你有没有尝试过放置
animate();
在onCreate()
内并将其从parentButtonClicked(View v)
中删除,以便在创建活动时调用动画,而不是按下按钮时?不明白为什么那对你不起作用。
然后你也会有一个无用的按钮。 :)