在 Java 中一个接一个地制作两个函数 运行
Making two functions run seperatly after another in Java
我有一个动画和一个应该被触发的意图。但是只有在动画结束后才能触发意图。我试过使用同步语句,但我一定是做错了什么。
有没有办法让线程等到我的动画结束?
代码:
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);
}
java中的synchronized
关键字用于一次只能有一个线程执行的函数。它与异步任务无关。您的问题是启动动画会启动一个新线程。然后主线程将在动画发生时继续 buttonClick()
。
您可以尝试使用:
.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
buttonClick();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
我有一个动画和一个应该被触发的意图。但是只有在动画结束后才能触发意图。我试过使用同步语句,但我一定是做错了什么。 有没有办法让线程等到我的动画结束?
代码:
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);
}
java中的synchronized
关键字用于一次只能有一个线程执行的函数。它与异步任务无关。您的问题是启动动画会启动一个新线程。然后主线程将在动画发生时继续 buttonClick()
。
您可以尝试使用:
.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
buttonClick();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});