在Java中使两个函数一个接一个地运行

时间:2015-08-17 08:29:25

标签: java android synchronization android-animation

我有动画和应该触发的意图。但是只有在动画结束后才会触发意图。我尝试过使用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);
}

1 个答案:

答案 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) {

            }
        });