Android 如何像TransitionManager一样使用MotionLayout?

Android 如何像TransitionManager一样使用MotionLayout?,android,android-motionlayout,Android,Android Motionlayout,Tutoiral我看到与MotionLayout有一些共同点,那就是它关注于onClick或onswip来触发MotionLayout转换。我想知道如何使用其他触发器从状态A转换到状态B,而不是onClick它将触发onNavDestinationChanged类似于: navController.addNavigationChangeListener { motionLayout.transtionToAnotherState() } 类似于TransitionManager的东西,如果我想

Tutoiral我看到与
MotionLayout
有一些共同点,那就是它关注于
onClick
onswip
来触发
MotionLayout
转换。我想知道如何使用其他触发器从状态A转换到状态B,而不是
onClick
它将触发
onNavDestinationChanged
类似于:

navController.addNavigationChangeListener { motionLayout.transtionToAnotherState() }
类似于
TransitionManager
的东西,如果我想从
场景A
转到
场景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();

<>但要注意,如果你处于过渡期,它会返回-1

没有100%种相同的方式来做,但是如果你知道你的原始状态和最终状态,你可以得到类似的结果。
setTransition(R.id.stateA, R.id.stateB);
setTransitionDuration(durationMs); // optional
transitionToEnd(); // here may be transitionToStart to goto state A from B
如果您不知道当前状态,可以从TransitionView本身读取:

getCurrentState();

但要注意,如果你处于过渡期,它会返回-1

,所以很明显,这很容易做到,对于任何需要知道的人来说,只需调用:

motionLayout.transitionToState(constraintSetId)

显然,这很容易做到,对任何需要知道的人来说,只需打电话:

motionLayout.transitionToState(constraintSetId)

我做了类似的事情。问题是,国家在轮换中遭到破坏。旋转后屏幕未正确更新。抱歉,我的应用程序没有横向模式,但我可以猜到ML丢失,无法在onSaveInstance回调中保存其状态。您自己是否尝试恢复正确的状态?显然,我上面提到的是库的较低版本上的一个bug。现在用2.0.0-beta06I修复了它,我做了类似的事情。问题是,国家在轮换中遭到破坏。旋转后屏幕未正确更新。抱歉,我的应用程序没有横向模式,但我可以猜到ML丢失,无法在onSaveInstance回调中保存其状态。您自己是否尝试恢复正确的状态?显然,我上面提到的是库的较低版本上的一个bug。现在已使用2.0.0-beta06修复