情况如下。我的Activity正在运行,我调用一个函数来启动动画。一旦这个动画结束,我需要等待另外2秒,然后正常继续该过程。你有什么建议我做的?
当我到达迭代结束时,OnAnimationEnd对我的情况没有帮助,我的进程已经从调用函数返回并继续处理。 你觉得我怎么样?做thread.sleep(动画的持续时间+ 2秒)? 感谢
编辑: 好吧我想也许我应该在代码中解释我在做什么 我有以下代码
Public class myclassActivity extends Activity{
..
.
.
.
public void runGame(){
player1.startAnimating();
player2.start Animating();
player3.startAnimating();
updateStatus();
runGame();
}
}
因此,您可以看到我的活动一直为每个玩家调用startAnimating。其中一些工作,然后动画1秒钟。
我不想让player2.startAnimation开始,直到player1.startAnimation完成,等等其余的代码。 目前发生的是代码完全执行并在动画仍在运行时再次重新运行。对此有任何帮助吗?
答案 0 :(得分:2)
观察这段代码,这对你有帮助。
public class PlayersActivity extends Activity {
ImageView I1,I2;
Button B;
Animation T1,T2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
I1=(ImageView)findViewById(R.id.i1);
I2=(ImageView)findViewById(R.id.i2);
B=(Button)findViewById(R.id.b1);
B.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
T1=new TranslateAnimation(0,100,0,0);
T1.setDuration(1000);
I1.startAnimation(T1);
T1.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
T2=new TranslateAnimation(0,100,0,0);
T2.setDuration(1000);
T2.setStartOffset(2000);
I2.startAnimation(T2);
T2.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
T1.setStartOffset(2000);
I1.startAnimation(T1);
}
});
}
});
}
});
}
}
假设你在完成player3之后启动这两个方法,你将player3放在AnAnimationEnd(){updateStatus(); runGame();}
答案 1 :(得分:0)
使用postDelayed函数在确切延迟后运行某些内容。例如(延迟2秒):
LinearLayout.postDelayed(new Runnable() {
public void run() {
//Do something
}
}, 2000);
答案 2 :(得分:0)
如何通过
传递调用者实例player1.startAnimating(this)
然后调用类似
的方法myclassActivity#animationFinished(this)
完成播放器1/2的动画?然后
void animationFinished(Player p) {
if (p==player1) {
player2.start();
} else if (p==player2) {
player3.start();
}
}
或其他什么