Как я могу запустить другое действие после окончании анимации? - Java

Пытался так

Animation zoom, zoom_out;


zoomAnimation();
private void zoomAnimation() {
        zoom= AnimationUtils.loadAnimation(this,R.anim.fast_zoomin);
        avatar.startAnimation(zoom);

        if (zoom.hasEnded()){
            zoomoutAnimation();
        }

    }

    private void zoomoutAnimation() {
        zoom_out= AnimationUtils.loadAnimation(this,R.anim.fast_zoomout);
        avatar.startAnimation(zoom_out);
    }

Ответы (2 шт):

Автор решения: Binary
val animation = AnimatorInflater.loadAnimator(applicationContext, R.animator.flipping) as ObjectAnimator
                animation.duration = 2000
                animation.start()

                animation.addListener(object : Animator.AnimatorListener {
                    override fun onAnimationStart(animation: Animator) {}

                    override fun onAnimationEnd(animation: Animator) {
                    //Нужная функция
                    }

                    override fun onAnimationCancel(animation: Animator) {}

                    override fun onAnimationRepeat(animation: Animator) {}
                })
→ Ссылка
Автор решения: Biron1gg

Я сделал так, чтобы при старте анимации прошло ровно столько секунд, сколько длится анимация, после этого начнется другое действие (C помощь метода Handler).

private void zoomAnimation() {
        zoom = AnimationUtils.loadAnimation(this,R.anim.fast_zoomin);
        zoom_out = AnimationUtils.loadAnimation(this,R.anim.fast_zoomout);
        avatar.startAnimation(zoom);

        if (!zoom.hasStarted()){
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                public void run() {
                    avatar.startAnimation(zoom_out);
                }
            }, 1500); //секунды после чего начнется другое действие при
                      //условии, что началось первое
        }

    }
→ Ссылка