У меня есть анимация, которую я хочу запустить по нажатию кнопки.Это прекрасно работает, если я вызываю его снаружи onClickListener.OnClickListener работает с другими командами (например, println ("xxx")), но не запускает анимацию.Есть идеи, почему?
Вот код:
val mContentView: View = findViewByID(R.id.soul2)
fun soulButler() {
object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
mContentView.viewTreeObserver.removeOnGlobalLayoutListener(this)
val leftPos = mButtonView.left.toFloat()
val rightPos = mButtonView.right.toFloat()
val topPos = mButtonView.top.toFloat()
val bottomPos = mButtonView.bottom.toFloat()
val centerX = (leftPos + rightPos - mContentView.width) / 2
val centerY = (topPos + bottomPos - mContentView.height) / 2
val soultoX = ObjectAnimator.ofFloat(mContentView, "x", centerX).apply {
duration = 600
}
val soultoY = ObjectAnimator.ofFloat(mContentView, "y", centerY).apply {
duration = 600
}
val soultoheaven = ObjectAnimator.ofFloat(mContentView, "translationY", -130f).apply {
duration = 300
}
soultoX.interpolator = AccelerateInterpolator()
soultoY.interpolator = AccelerateInterpolator(3f)
soultoheaven.interpolator = DecelerateInterpolator()
fun soulExit() = AnimatorSet().apply {
play(soultoX).with(soultoY)
play(soultoheaven).after(soultoY)
start()
}
soulExit()
}
}.run {
mContentView.viewTreeObserver.addOnGlobalLayoutListener(this)
}
}
selectLevelButton.setOnClickListener {
mButtonView = findViewById(R.id.selectLevelButton)
soulButler()
}