是否可以在没有动画的情况下在 MotionLayout 中设置结束状态?

MsP*_*121 5 android android-animation android-recyclerview android-constraintlayout android-motionlayout

我有一些项目包装在 MotionLayout 和 recyclerView 中,其中需要将一项设置为“结束”状态,并将其余项目保留在“开始”状态,没有任何动画或闪烁,只需显示。 在此输入图像描述

当我尝试打电话时

transitionToState(endState)
Run Code Online (Sandbox Code Playgroud)

或者

transitionToEnd()
Run Code Online (Sandbox Code Playgroud)

动画发生了,但我只需要第一次将元素设置为结束状态。当用户单击项目时,所有内容都应该有动画

小智 7

您可以通过执行以下操作转换到不带动画的 MotionLayout 的最终状态:

yourMotionLayout.setTransitionDuration(0)
yourMotionLayout.transitionToEnd()
Run Code Online (Sandbox Code Playgroud)

您可以将其包装到扩展函数中以便于重用:

/**
 * Triggers the underlying [MotionLayout] to transition to end state immediately.
 */
fun MotionLayout.jumpToEnd() {
    this.setTransitionDuration(0)
    this.transitionToEnd()
}
Run Code Online (Sandbox Code Playgroud)