gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:50 25 4
gpt4 key购买 nike

我尝试在我的应用程序中添加我的自定义共享元素转换,并让它在不同 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com