带有 KTX 的安卓动画



我的Android应用程序中有一些动画,我想更改我的代码以利用Android KTX。可悲的是,我真的不了解有关它的文档。有人可以告诉我如何在Android KTX的帮助下改进这段代码吗?

view
.animate()
.translationY(view.height.toFloat())
.setDuration(3000)
.setInterpolator(AccelerateInterpolator())
.setListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator?) {}
override fun onAnimationRepeat(animation: Animator?) {}
override fun onAnimationCancel(animation: Animator?) {}
override fun onAnimationEnd(animation: Animator?) {
// Do whatever I want
}
})

当然,我已经在我的 Gradle 文件中添加了依赖项:

implementation 'androidx.core:core-ktx:1.0.2'

提前非常感谢你:)

Android KTX具有doOnEnd { /** Do whatever you want **/ }和其他android.animation.Animator扩展功能。当你调用view.animate()时,它会返回不是从类继承android.animation.AnimatorViewPropertyAnimator。因此,您无法view.animate().doOnEnd { /** Do whatever you want **/ }由Android KTX提供。

但是,您可以使用 withEndAction 在动画结束时执行任何操作。withEndAction是默认ViewPropertyAnimator的一部分,因此,您无需拥有Android KTX即可使用它:

view
.animate()
.translationY(image.height.toFloat())
.setDuration(3000)
.setInterpolator(AccelerateInterpolator())
.withEndAction {
// Do whatever you want
}

Android KTXAnimator实例提供了一些动画事件监听器函数。由于view.animate()返回ViewPropertyAnimator的实例,你应该使用Animator的子类(如ObjectAnimator(才能使用KTX功能。例如:

ObjectAnimator.ofFloat(view, "translationY", view.height.toFloat()).apply {
duration = 3000
interpolator = AccelerateInterpolator()
// Using KTX extension function:
doOnEnd { /** Do whatever you want **/ }
start()
}

相关内容

  • 没有找到相关文章

最新更新