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

时间:2018-11-28 18:15:07

标签: android android-motionlayout

我用如下代码手动设置新的过渡:

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

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

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

2 个答案:

答案 0 :(得分:0)

如果您在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>

然后以编程方式可以执行以下操作:

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

一切都会起作用

答案 1 :(得分:0)

intro_motion_layout.setTransition(R.id.middle, R.id.end)
intro_motion_layout.setTransitionDuration(1000)
intro_motion_layout.transitionToEnd()

为我工作