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

问题描述 投票:2回答:2

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

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

是否可以通过这种方式设置持续时间?

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

android android-motionlayout
2个回答
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()

并且一切都会起作用


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

为我工作]

© www.soinside.com 2019 - 2024. All rights reserved.