我尝试在我的应用中添加自定义共享元素转换,并使其在不同活动中的某些不同模式下工作。但在我的测试中,只执行被调用活动的输入转换。
这是我在调用活动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转换。
为什么会这样?什么时候执行其他转换?
答案 0 :(得分:4)
当活动A
开始活动B
时,会发生以下事件:
A
退出共享元素转换已运行。B
输入共享元素转换运行。当B
返回A
时,会发生以下事件:
B
返回共享元素转换(如果未指定返回转换,则将使用B
输入共享元素转换)。A
重新进入共享元素转换(如果未指定重新转换转换,则将使用A
退出共享元素转换)。因此,要回答您的问题,A
输入共享元素转换永远不会执行,因为这是活动转换的工作方式。 :)