如何捕捉动画的结尾

时间:2019-06-18 20:32:01

标签: kotlin

我正在尝试制作动画并捕获动画的结尾,因此我可以在其结论处做些事情。我一直在网上寻找例子,这就是我所发现的。不幸的是,它没有编译,我也不知道我在做什么错。任何帮助将不胜感激。预先感谢。

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 个答案:

答案 0 :(得分:1)

您可以通过此操作设置监听器

    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

这在计时方面更加灵活,并且可以访问父类中的参数,因为它使用的是lambda表达式。

根据您的需要选择一个。