我尝试在我的应用程序中添加我的自定义共享元素转换,并让它在不同 Activity 的一些不同模式下工作。但是在我的测试中,只有被调用的 Activity 的进入转换被执行。
这是我在调用 Activity 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);
这是我在调用的 Activity 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 转换。
为什么会这样?什么时候执行另一个转换?
最佳答案
当 Activity A
启动 Activity B
时,会发生以下事件:
A
的退出共享元素转换已运行。B
的输入共享元素转换已运行。
当 B
返回到 A
时,会发生以下事件:
B
的返回共享元素转换运行(如果没有指定返回转换,将使用B
的进入共享元素转换)。A
的 reenter 共享元素转换运行(如果没有指定 reenter 转换,将使用A
的 exit 共享元素转换)。
因此,为了回答您的问题,A
的输入共享元素转换永远不会执行,因为这是 Activity 转换的工作方式。 :)
关于android - 为什么只有被调用的activity的共享元素进入transition run?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27939390/