在 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) {

            }
        });