Как программно установить продолжительность перехода в MotionLayout? - PullRequest
0 голосов
/ 28 ноября 2018

Я установил новый переход вручную в коде, подобном этому:

intro_motion_layout.setTransition(R.id.middle, R.id.end)

Есть ли способ, которым я также могу установить продолжительность таким образом?

У меня есть несколько ConstraintSets, определенных вXML и я переключаемся между ними, когда первый переход завершен, используя onTransitionCompleted.У меня есть один Transition в моем XML, и он правильно использует длительность, но следующие Transitions, которые я установил в коде, происходят очень быстро, и я не могу найти способ изменить их продолжительность.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019
intro_motion_layout.setTransition(R.id.middle, R.id.end)
intro_motion_layout.setTransitionDuration(1000)
intro_motion_layout.transitionToEnd()

работал на меня

0 голосов
/ 04 февраля 2019

если вы определяете ваш переход на xml, то вы устанавливаете свой начальный / конечный идентификатор, он будет получать информацию из xml

<Transition
    app:constraintSetStart="@id/bottom_sheet_closed"
    app:constraintSetEnd="@id/bottom_sheet_open"
    app:duration="1550"
    app:interpolator="easeIn">

    <OnSwipe
        app:dragDirection="dragUp"
        app:moveWhenScrollAtTop="true"
        app:touchAnchorId="@id/divider"
        app:touchAnchorSide="top" />

</Transition>

, тогда программно вы можете сделать:

root.motion_layout.setTransition(R.id.bottom_sheet_closed, R.id.bottom_sheet_open)
root.motion_layout.transitionToEnd()

и все будет работать

...