Как поймать конец анимации - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь запустить анимацию и перехватить конец анимации, чтобы я мог что-то сделать в ее завершении. Я искал примеры в Интернете, и это то, что я нашел. К сожалению, он не компилируется, и я понятия не имею, что я делаю неправильно. Любая помощь будет принята с благодарностью. Заранее спасибо.

discView - это анимированное представление. animationDropSpeed ​​- это просто число mainActivity - это указатель на объект mainActivity для моего приложения.

        val discAnimator = ObjectAnimator.ofFloat(discView, "translationY", 723f)
        discAnimator.setDuration(animationDropSpeed)

        discAnimator.addListener(object : Animator.AnimatorListener{
            override fun onAnimationEnd(p0: Animator?) {
                Toast.makeText(mainActivity,"Animation Started",Toast.LENGTH_SHORT).show();
            }
        })
        discAnimator.start()

1 Ответ

1 голос
/ 19 июня 2019

Вы можете установить слушателя, выполнив это

    ivSample.animation.setAnimationListener(
        object:Animation.AnimationListener{
            override fun onAnimationRepeat(animation: Animation?) {
                TODO("not implemented")
            }

            override fun onAnimationEnd(animation: Animation?) {
                TODO("not implemented") 
            }

            override fun onAnimationStart(animation: Animation?) {
                TODO("not implemented") 
            }
        }
    )

Однако иногда я предпочитаю такой способ:

    ivSample.animate().translationY(723f).setDuration(500) // set duration
    ivSample.postDelayed({
        // TODO Doing my Job Here
    }, 600)  // set a delay more than the duration

Это более гибкий график и может обращаться к параметрам внутри родительского класса, потому что он использует лямбда-выражение.

Выберите один, зависит от ваших потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...