Как остановить анимацию макета движения, когда данные подходят для экрана

#android #kotlin #android-motionlayout

Вопрос:

Я использовал макет движения для макета свертывания. Макет движения работает идеально, как мне нужно, но я хочу настроить анимацию макета движения на основе данных, которые также подходят для экрана.

Например, если данные помещаются на экране, то анимация не нужна. Если данные выходят за пределы экрана, то отображается анимация.

Ответ №1:

Наконец-то я нашел решение:

 motionLogin?.enableTransition(R.id.transitionLogin, false)
        constraintLayout.viewTreeObserver.addOnGlobalLayoutListener(object :
            ViewTreeObserver.OnGlobalLayoutListener {

            override fun onGlobalLayout() {
                // If the scrollView can scroll, disable the accept menu item button
                if (constraintLayout.canScrollVertically(1) || constraintLayout.canScrollVertically(
                        -1
                    )
                ) {
                    motionLogin?.enableTransition(R.id.transitionLogin, true)
                }

                // Remove itself after onGlobalLayout is first called or else it would be called about a million times per second
                constraintLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
            }
        })