检查AnimatorSet是否已完成动画?

Zen*_*Zen 18 animation android objectanimator

我正在尝试使用淡入淡出动画来设置动画 AnimatorSet

Button fades in > Click button > Remaining buttons fade out

所以为了做到这一点,我想设置onClickListner after the animation is completed,但这似乎不起作用.单击动画中间的按钮triggers the onClick action:

setQuestion = new AnimatorSet();           
setQuestion.playSequentially(fadeinAnimationQ,fadeinAnimation1,fadeinAnimation2,fadeinAnimation3,fadeinAnimation4,fadeinAnimation5);
setQuestion.start();
Run Code Online (Sandbox Code Playgroud)

这是检查的方法if the animation has finished.

private void checkAnimation() {
    while (true) {
        // Check if animation has ended
        if (setQuestion.isRunning() == false) {
            assignListners();
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Rab*_*oss 43

您可以在fadeinAnimation5上设置AnimatorListener.这将为您提供onAnimationEnd回调.

fadeinAnimation5.addListener(new AnimatorListener() {

            @Override
            public void onAnimationStart(Animator animation) {
                // ...
            }

            @Override
            public void onAnimationRepeat(Animator animation) {
                // ...
            }

            @Override
            public void onAnimationEnd(Animator animation) {
                // ...
            }

            @Override
            public void onAnimationCancel(Animator animation) {
                // ...
            }
        });
Run Code Online (Sandbox Code Playgroud)

或者,正如slott所建议的那样使用AnimatorListenerAdapter

fadeinAnimation5.addListener(new AnimatorListenerAdapter() {

    @Override
    public void onAnimationEnd(Animator animation) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果你不需要所有的事件,你可以去AnimatorListenerAdapter,这让事情变得更简单. (7认同)
  • 我被这句警告所迷惑。如果动画完成或被取消,则会调用 onAnimationEnd 回调。要仅在动画完成时收到通知,请改用 withEndAction(Runnable )。 (2认同)