Анимация не начнется с onClick - PullRequest
0 голосов
/ 24 января 2019

У меня есть анимация, которую я хочу запустить по нажатию кнопки.Это прекрасно работает, если я вызываю его снаружи 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()
            }
...