Android Kotlin - 设置动画结束/完成监听器

标签 android kotlin android-animation

val anim = swipe.animate()
        .rotationBy((-30).toFloat())
        .setDuration(1000)
        .translationX((-swipe.left).toFloat())
        .setInterpolator(AccelerateDecelerateInterpolator())

anim.start()

我需要一个动画完成监听器,我尝试过:

anim.setAnimationListener(object : Animation.AnimationListener {
    override fun onAnimationStart(p0: Animation?) {

    }

    override fun onAnimationRepeat(p0: Animation?) {

    }

    override fun onAnimationEnd(p0: Animation?) {

    }
})

但出现此错误

Unresolved reference: setAnimationListener

如何正确地做到这一点?

最佳答案

根本原因

ViewPropertyAnimator类中,没有名为 setAnimationListener 的方法。

解决方案1

anim.withEndAction {
    // Your code logic goes here.
}

解决方案2

anim.setListener(object : Animator.AnimatorListener {
    override fun onAnimationRepeat(animation: Animator?) {}
    override fun onAnimationCancel(animation: Animator?) {}
    override fun onAnimationStart(animation: Animator?) {}

    override fun onAnimationEnd(animation: Animator?) {
        // Your code logic goes here.
    }
})

注意:如果用户在动画播放时离开屏幕,请记住取消动画。

swipe.animate().cancel()

关于Android Kotlin - 设置动画结束/完成监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65117176/

相关文章:

android - 如何使用 Sugar ORM?

android - 使用多种分辨率的图像

android - 底部导航栏的导航组件不起作用

kotlin - 如何用数据类发表文章

安卓和 Kotlin : Unresolved reference: home

Android - 如何沿路径设置动画颜色变化

java - 如何向启动画面添加动画?

android - 加载android应用程序时如何删除白屏?

android - “Fluttertoast”已被弃用,不应使用。将在进一步版本中删除

java - 如何将nestedscrollview动画设置到底部