为什么只有被调用的 activity 的共享元素进入转换 运行?
Why only the called activity's shared element enter transition run?
我尝试在我的应用程序中添加我的自定义共享元素转换,我让它在不同 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
return 到 A
时,会发生以下事件:
B
的return共享元素过渡是运行(如果没有指定return过渡,B
的进入共享元素过渡将改用)。
A
的重新进入共享元素过渡是运行(如果没有指定重新进入过渡,将使用A
的退出共享元素过渡)。
因此,为了回答您的问题,A
的输入共享元素转换从不执行,因为那是 activity 转换的工作方式。 :)
我尝试在我的应用程序中添加我的自定义共享元素转换,我让它在不同 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
return 到 A
时,会发生以下事件:
B
的return共享元素过渡是运行(如果没有指定return过渡,B
的进入共享元素过渡将改用)。A
的重新进入共享元素过渡是运行(如果没有指定重新进入过渡,将使用A
的退出共享元素过渡)。
因此,为了回答您的问题,A
的输入共享元素转换从不执行,因为那是 activity 转换的工作方式。 :)