为什么只有被调用活动的共享元素才能进入转换运行状态?

时间:2015-01-14 09:20:27

标签: android android-transitions shared-element-transition

我尝试在我的应用中添加自定义共享元素转换,并使其在不同活动中的某些不同模式下工作。但在我的测试中,只执行被调用活动的输入转换。

这是我在调用活动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转换。

为什么会这样?什么时候执行其他转换?

1 个答案:

答案 0 :(得分:4)

当活动A开始活动B时,会发生以下事件:

  1. A退出共享元素转换已运行。
  2. B输入共享元素转换运行。
  3. B返回A时,会发生以下事件:

      运行
    1. B返回共享元素转换(如果未指定返回转换,则将使用B输入共享元素转换)。
    2. 运行
    3. A重新进入共享元素转换(如果未指定重新转换转换,则将使用A退出共享元素转换)。
    4. 因此,要回答您的问题,A输入共享元素转换永远不会执行,因为这是活动转换的工作方式。 :)