为什么只有被叫活动的共享元素才能进入过渡运行?

幽灵飞行

我试图在我的应用程序中添加自定义共享元素过渡,并使其在不同活动中的某些不同模式下工作。但是在我的测试中,仅执行被调用活动的enter转换。

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

为什么会这样?以及何时执行其他转换?

亚历克斯·洛克伍德

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

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

B返回时A,会发生以下事件:

  1. B运行的返回共享元素转换(如果未指定返回转换,B则将使用输入共享元素转换)。
  2. A的reenter共享元素转换已运行(如果未指定reenter转换,A则将使用退出共享元素转换)。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么只有进入容器的bash才能访问Apache默认页面?

共享元素过渡活动

为什么只有在使用Windows Server作为网关时,我的Android手机才能进行DNS查询?

为什么我的SFML游戏只有在终端机中运行才能正常运行?

为什么在带有 v-if 的元素内过渡没有进入过渡而是离开工作?

为什么链接需要在手机上双击才能进入链接?

为什么 plymouth-quit-wait.service 需要我 3 分钟才能进入我的桌面?

为什么只有首页路由才能在实时服务器上运行?

为什么Fade过渡不适用于共享元素

对话框活动的共享元素过渡

不同活动片段之间的共享元素过渡

为什么`accumulate`不能进入C ++ 20的范围?

为什么 VLC 不能进入全屏模式?

了解退出/重新进入共享元素的过渡

Android-带有调用活动finish()的共享元素过渡

为什么只有根记录器才能在具有JSON配置的Log4j 2中运行?

为什么吐司不被叫

为什么只有 12 列时有一列进入下一行?

无法从ROS服务中获取数据,只能进入服务器但数据没有出来,为什么?

为什么只有root用户才能从EC2实例上载到运行Java程序的S3存储桶?

为什么只有带有内联类型的函数才能检测到额外的字段?

为什么我的代码只有在遇到断点但没有断点时才能正常工作

为什么操作系统需要将所有RAM复制到HDD才能进行休眠?

共享元素过渡没有预期的行为

为什么只有通过视图菜单工具栏才能使用Firefox的插件?

为什么只有在ImageView中单击才能加载我的gif?

为什么这台计算机只有在倾斜时才能工作?

为什么只有调整屏幕大小才能更新角度应用程序?

为什么只有主线程才能在Python中设置信号处理程序