android - 为什么只有被调用的activity的共享元素进入transition run?

标签 android android-transitions shared-element-transition

我尝试在我的应用程序中添加我的自定义共享元素转换,并让它在不同 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 返回到 A 时,会发生以下事件:

  1. B 的返回共享元素转换运行(如果没有指定返回转换,将使用B 的进入共享元素转换)。
  2. A 的 reenter 共享元素转换运行(如果没有指定 reenter 转换,将使用 A 的 exit 共享元素转换)。

因此,为了回答您的问题,A 的输入共享元素转换永远不会执行,因为这是 Activity 转换的工作方式。 :)

关于android - 为什么只有被调用的activity的共享元素进入transition run?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27939390/

相关文章:

android - 是否可以更改错误消息 toast 文本?

android - 选择选项卡 X 时,如何更改图标?

java - 如何清除设备内存缓存

android - 如何在对话框 fragment 中使用共享元素转换

android - 如何为pre Lollipop实现 fragment 共享元素?

android - 共享元素更新图片来源

android - 在 android 中更改现有 db4o 中的类属性

javascript - android中的自定义webview,水平滚动

android - sharedElment 过渡使用不过渡的 fragment

android - 如何在 Android 旋转上创建这样的过渡效果