Android KTX动画
Android animation with KTX
我的 Android 应用程序中有一些动画,我想更改我的代码以利用 Android KTX。可悲的是,我真的不明白the documentation about it。有人能告诉我如何在 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为Animator
实例提供了一些动画事件监听函数。作为 view.animate()
returns 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()
}
Android KTX有doOnEnd { /** Do whatever you want **/ }
和android.animation.Animator
的其他扩展功能。当你调用 view.animate()
时,它 returns ViewPropertyAnimator
是 而不是 继承自 android.animation.Animator
class。因此,您不能 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 应用程序中有一些动画,我想更改我的代码以利用 Android KTX。可悲的是,我真的不明白the documentation about it。有人能告诉我如何在 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为Animator
实例提供了一些动画事件监听函数。作为 view.animate()
returns 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()
}
Android KTX有doOnEnd { /** Do whatever you want **/ }
和android.animation.Animator
的其他扩展功能。当你调用 view.animate()
时,它 returns ViewPropertyAnimator
是 而不是 继承自 android.animation.Animator
class。因此,您不能 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
}