我有动画和应该触发的意图。但是只有在动画结束后才会触发意图。我尝试过使用synchronized语句,但我一定做错了。 有没有办法让线程等到我的动画结束?
代码:
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
synchronized (startButton){
animate();
buttonClick();}
}
});
}
public synchronized void animate (){
final ImageButton startButton = (ImageButton) findViewById(R.id.start_button);
final Animation bewegen = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.bewegen);
startButton.startAnimation(bewegen);
}
public synchronized void buttonClick(){
Intent viewStartseite = new Intent(getBaseContext(), Startseite.class);
//ActivityOptions options = ActivityOptions.makeScaleUpAnimation(startButton, 0,
// 0, startButton.getWidth(), startButton.getHeight());
startActivity(viewStartseite);
}
答案 0 :(得分:0)
java中的synchronized
关键字用于一次只能执行一个线程的函数。它与Async任务无关。您的问题是启动动画会启动一个新线程。然后,当动画发生时,主线程将继续buttonClick()
。
您可以尝试使用:
.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
buttonClick();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});