我试图在我的应用程序中添加自定义共享元素过渡,并使其在不同活动中的某些不同模式下工作。但是在我的测试中,仅执行被调用活动的enter转换。
这是我在调用活动A中的代码:
TransitionSet set = new TransitionSet();
set.setOrdering(TransitionSet.ORDERING_TOGETHER);
set.addTransition(new ChangeBounds());
PortalHeaderBackgroundTransition back = new PortalHeaderBackgroundTransition();
back.setMode(0);
set.addTransition(back);
getWindow().setSharedElementEnterTransition(set);
set = new TransitionSet();
set.setOrdering(TransitionSet.ORDERING_TOGETHER);
set.addTransition(new ChangeBounds());
back = new PortalHeaderBackgroundTransition();
back.setMode(1);
set.addTransition(back);
getWindow().setSharedElementExitTransition(set);
这是我在调用活动B中的代码:
TransitionSet set = new TransitionSet();
set.setOrdering(TransitionSet.ORDERING_TOGETHER);
set.addTransition(new ChangeBounds());
PortalHeaderBackgroundTransition back = new PortalHeaderBackgroundTransition();
back.setMode(2);
set.addTransition(back);
getWindow().setSharedElementEnterTransition(set);
set = new TransitionSet();
set.setOrdering(TransitionSet.ORDERING_TOGETHER);
set.addTransition(new ChangeBounds());
back = new PortalHeaderBackgroundTransition();
back.setMode(3);
set.addTransition(back);
getWindow().setSharedElementExitTransition(set);
我在PortalHeaderBackgroundTransition中添加了断点,每当A调用B或B返回A时,仅执行模式2转换。
为什么会这样?以及何时执行其他转换?
当活动A
开始活动时B
,将发生以下事件:
A
的退出共享元素转换已运行。B
的输入共享元素转换已运行。当B
返回时A
,会发生以下事件:
B
运行的返回共享元素转换(如果未指定返回转换,B
则将使用输入共享元素转换)。A
的reenter共享元素转换已运行(如果未指定reenter转换,A
则将使用退出共享元素转换)。因此,为回答您的问题,A
永远不会执行Enter共享元素转换,因为这是活动转换的工作方式。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句