Сделайте переход MotionLayout для постоянной скорости

Как сделать автоматический переход на постоянную скорость? Он всегда начинается медленно и ускоряется по мере продвижения, затем он замедляется, когда приближается к завершению перехода, я хочу, чтобы скорость была одинаковой с начала и до конца.

<Transition
    app:duration="@integer/long_duration"
    app:autoTransition="animateToEnd"
    app:constraintSetEnd="@id/end"
    app:constraintSetStart="@+id/start">

    <KeyFrameSet>
        <KeyAttribute
            app:motionTarget="@id/animated_view"
            android:alpha="1" />
    </KeyFrameSet>
</Transition>

person Kaba    schedule 07.11.2020    source источник


Ответы (1)


Вы можете использовать свойство motionInterpolator своего Transition. Просто установите линейный

<Transition
    app:duration="@integer/long_duration"
    app:autoTransition="animateToEnd"
    app:constraintSetEnd="@id/end"
    app:constraintSetStart="@+id/start"

    app:motionInterpolator="linear"> <!-- this is the trick -->

    <KeyFrameSet>
        <KeyAttribute
            app:motionTarget="@id/animated_view"
            android:alpha="1" />
    </KeyFrameSet>
</Transition>
person Gaket    schedule 09.11.2020
comment
Это также правильно, пока я пытался это понять, я решил попробовать использовать метод анимации, который предоставляет каждое представление, и вы также можете сделать начальную и конечную скорость анимации постоянной, в основном: view.animate (). интерполятор = ЛинейныйИнтерполятор () - person Kaba; 10.11.2020