[英]How can I handle view animation in android?
我正在 android 中学习动画,我有几个问题 -
我认为我基于一些布尔值制作动画:
mainFab.setOnClickListener {
isOpen = ViewAnimations.rotate(binding.mainFab, !isOpen)
if (isOpen) {
ViewAnimations.apply {
showMenu(binding.shareFab)
}
} else {
ViewAnimations.apply {
hideMenu(binding.shareFab)
}}
}
视图动画方法:
fun rotateFab(view: View, isFabOpen: Boolean): Boolean {
view.animate()
.rotation(if (isFabOpen) 1440f else 0f)
.setDuration(2000)
.setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
super.onAnimationEnd(animation)
Log.d(TAG, "onAnimationEnd: ")
}
})
return isFabOpen
}
fun showMenu(view: View) {
view.visibility = View.VISIBLE
view.alpha = 0f
view.animate()
.setDuration(2000)
.setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
super.onAnimationEnd(animation)
}
})
.alpha(1f)
.start()
}
fun hideMenu(view: View) {
view.animate()
.setDuration(2000)
.setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
view.visibility = View.GONE
super.onAnimationEnd(animation)
}
}).alpha(0f)
.start()
我的问题是:
在showMenu
函数中,为什么我的动画在没有空侦听器的情况下无法正常工作? 第一次工作正常,但从第二次开始,它确实为视图设置了动画,但随后将 alpha 设置为 0/视图消失了。
为什么动画在没有.start()
情况下仍然有效? 是否必须使用它?
如果我通过调用showMenu
开始动画,然后在中途调用hideMenu
它只是以非常丑陋的方式隐藏视图,有没有办法以更优雅的方式“反转”动画?
你所有的问题都来自过度工程。 对象ViewAnimations
在做什么?
关于问题:
.start()
动画无法启动。 如果动画正在开始,那么您的逻辑中的某处又会出现问题。ViewPropertyAnimator
动画可以完美地从半状态到新状态的动画。 我建议您从头开始编写动画,以便对您的所有步骤充满信心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.