如何在 MotionLayout 中以编程方式设置过渡持续时间?

ali*_*ter 5 android android-motionlayout

我在这样的代码中手动设置了一个新的过渡:

intro_motion_layout.setTransition(R.id.middle, R.id.end)
Run Code Online (Sandbox Code Playgroud)

有没有办法我也可以这样设置持续时间?

ConstraintSets在 XML 中定义了多个,当第一次转换完成时,我使用onTransitionCompleted. Transition我的 XML 中有一个,它在那里正确使用了持续时间,但Transitions我在代码中设置的以下内容发生得非常快,我找不到改变它们的持续时间的方法。

odi*_*ity 5

intro_motion_layout.setTransition(R.id.middle, R.id.end)
intro_motion_layout.setTransitionDuration(1000)
intro_motion_layout.transitionToEnd()
Run Code Online (Sandbox Code Playgroud)

为我工作


小智 -1

如果您在 xml 上定义 Transition,然后设置开始/结束 id,它将从 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>
Run Code Online (Sandbox Code Playgroud)

然后以编程方式你可以这样做:

root.motion_layout.setTransition(R.id.bottom_sheet_closed, R.id.bottom_sheet_open)
root.motion_layout.transitionToEnd()
Run Code Online (Sandbox Code Playgroud)

一切都会奏效