【发布时间】:2019-08-25 18:57:35
【问题描述】:
我必须在我的 Kotlin 场景中制作动画,我想从这两个场景中制作一个序列,并且我希望序列具有无限重复,例如循环序列。
//First Animation
ObjectAnimator.ofFloat(block, "translationX", 50f).apply {
duration = 500
start()
}
//Second Animation
ObjectAnimator.ofFloat(block, "translationX", 0f).apply {
duration = 500
start()
}
感谢您的帮助!
解决方案:
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import kotlinx.android.synthetic.main.activity_main.*
import android.animation.ValueAnimator
import android.animation.ObjectAnimator
import android.animation.AnimatorSet
import android.animation.Animator
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
animateTogether(
stripe.objectAnimate() // https://github.com/blipinsk/ViewPropertyObjectAnimator
.translationX(100f)
.get(),
stripe.objectAnimate()
.translationX(-100f)
.get()
).start()
}
fun animateTogether(vararg animators: Animator): AnimatorSet =
AnimatorSet().apply {
ObjectAnimator.ofFloat(stripe, "translationX", 100f).apply {
duration = 500
start()
}
ObjectAnimator.ofFloat(stripe, "translationX", -100f).apply {
duration = 500
start()
}
}
【问题讨论】:
-
把你的两个动画师放在
AnimatorSet中。 -
您需要启动
animatorSet,而不是其中的两个单独的动画师。我认为您实际上并不需要animateTogether中的对象动画师,这就是为什么它最初也不是我的答案的一部分。
标签: android-studio animation kotlin sequence