如何像TransitionManager一样使用MotionLayout?
How to use MotionLayout like TransitionManager?
Tutoiral 我看到 MotionLayout
有一些共同点,那就是它专注于 onClick
或 onSwipe
来触发 MotionLayout
过渡。我想知道如何使用其他触发器从状态 A 转换到状态 B,而不是 onClick
它将触发 onNavDestinationChanged
类似的东西:
navController.addNavigationChangeListener { motionLayout.transtionToAnotherState() }
类似于 TransitionManager
如果我想从 Scene A
转到 Scene B
我就这样做:
TransitionManager.beginDelayedTransition(rootLayout)
// Do someLayout changes
1) MotionLayout 是否可以做类似的事情?
2) 如果是,谁能指导我?
非常感谢。
没有 100% 相同的方法,但如果你知道你的原始状态和最终状态,你可以获得类似的结果。
setTransition(R.id.stateA, R.id.stateB);
setTransitionDuration(durationMs); // optional
transitionToEnd(); // here may be transitionToStart to goto state A from B
如果您不知道您当前的状态,您可以从 TransitionView 本身读取它:
getCurrentState();
但请注意,如果您正处于过渡期,它将 return -1
显然,这样做真的很容易,对于任何需要知道的人,只需拨打:
motionLayout.transitionToState(constraintSetId)
Tutoiral 我看到 MotionLayout
有一些共同点,那就是它专注于 onClick
或 onSwipe
来触发 MotionLayout
过渡。我想知道如何使用其他触发器从状态 A 转换到状态 B,而不是 onClick
它将触发 onNavDestinationChanged
类似的东西:
navController.addNavigationChangeListener { motionLayout.transtionToAnotherState() }
类似于 TransitionManager
如果我想从 Scene A
转到 Scene B
我就这样做:
TransitionManager.beginDelayedTransition(rootLayout)
// Do someLayout changes
1) MotionLayout 是否可以做类似的事情? 2) 如果是,谁能指导我?
非常感谢。
没有 100% 相同的方法,但如果你知道你的原始状态和最终状态,你可以获得类似的结果。
setTransition(R.id.stateA, R.id.stateB);
setTransitionDuration(durationMs); // optional
transitionToEnd(); // here may be transitionToStart to goto state A from B
如果您不知道您当前的状态,您可以从 TransitionView 本身读取它:
getCurrentState();
但请注意,如果您正处于过渡期,它将 return -1
显然,这样做真的很容易,对于任何需要知道的人,只需拨打:
motionLayout.transitionToState(constraintSetId)