为什么只有被调用的 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 时,会发生以下事件:

  1. A 的退出共享元素转换是 运行.
  2. B 的输入共享元素转换是 运行.

B return 到 A 时,会发生以下事件:

  1. B的return共享元素过渡是运行(如果没有指定return过渡,B的进入共享元素过渡将改用)。
  2. A的重新进入共享元素过渡是运行(如果没有指定重新进入过渡,将使用A的退出共享元素过渡)。

因此,为了回答您的问题,A 的输入共享元素转换从不执行,因为那是 activity 转换的工作方式。 :)