问题标签 [fragment-transitions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
10140 浏览

android - 片段之间动画的共享元素

我正在尝试将 2 个简单视图从 RecyclerView 中的选定项目设置为新片段。我看过很多将共享元素从一个 Activity 动画化到另一个 Activity 的示例,但很少有将共享元素从一个 Fragment 动画化到同一 Activity 内的另一个 Fragment 的示例。它几乎可以工作。

这是我的结构。

活动

-- 带有 RecyclerView 的全屏 Fragment1

-- 带有细节的全屏 Fragment2

当用户在 Fragment1 的 RecyclerView 中选择一个项目时,我将 Fragment1 替换为 Fragment2,该 Fragment2 具有一个 View,其中的共享元素处于不同的位置和大小。

让它工作有一点技巧,你必须确保你的 transitionName 对于列表中的每个项目都是唯一的,当然,transitionName 必须与 Fragment2 中元素的 transitionName 匹配才能播放动画。我有这部分工作,当我选择一个项目时,2 个共享视图会进行动画处理,但这与您在 2 个活动之间执行它时所期望的不完全一样。

如果我选择屏幕底部附近的一个项目,它会为 Fragment2 绘制视图并为 2 个共享视图设置动画,就好像它们位于屏幕顶部的项目中一样。很难解释。这里有一些图片

片段1 选择列表底部附近的项目

片段2 我希望蓝线从底部到顶部动画,但它从顶部开始并且只水平增长,我希望黄线保持在底部附近但水平增长,但它从屏幕顶部开始并动画下来

在这两个片段中,我设置以下

同样在他们的 onCreate() 父 Activity 我已经设置

知道为什么我的共享元素动画从屏幕顶部开始,即使它们从屏幕底部的选定项目开始?

0 投票
2 回答
10059 浏览

android - 如何在 Android Lollipop 中推迟 Fragment 的进入转换?

在 Android Lollipop 中,Activity#postponeEnterTransition()Activity#startPostponedEnterTransition()方法使 Activity 能够延迟开始进入和退出共享元素转换,直到加载所有数据。这些非常适合Activity过渡。

Fragment有没有办法在使用过渡时达到相同的效果?

0 投票
0 回答
736 浏览

android - Android Fragment onCreateAnimator 输入始终为真

我在 HTC 渴望 4.0.3 上面临这个问题。动画总是进入,即使片段正在退出......这个问题在 4.4 或 5.0 上不存在

0 投票
0 回答
3045 浏览

android - Lollipop 过渡 - 片段到活动

我想弄清楚如何在 Lollipop 中进行活动(或片段??)转换。我正在使用 AppCompat v7 - v21。

这是我的场景:

在此处输入图像描述

当单击 GridView(内部片段)中的一个项目时,我希望图像能够像此处的链接中那样进行转换。我如何实现它?有没有办法我可以使用样式来做到这一点?如果我通过代码来做,我可以有一个如何从片段到活动的示例吗?

[编辑]

这是我到目前为止所取得的成就:

样式.xml:值-v21

MainActivity 中的 onItemClick():

在详细活动中:

这给了我过渡,但是,过渡不像我预期的那样顺利。仍在努力。

我可以在棒棒糖之前的设备中获得这些转换吗?当我尝试在较低版本中运行代码时,例如 2.3.6,它崩溃并说,NoSuchMethodDef getEnterTransition(). 这些转变只与棒棒糖有关吗?

0 投票
1 回答
2453 浏览

android - 在共享元素片段转换方面需要帮助

我需要有关片段到片段转换的帮助。我不清楚如何正确地做到这一点,因为我能找到的文档很少。

我有一个带有电影海报的 GridView。当单击一张海报时,它将移动到下一个片段。海报是共享元素,它将调整大小(变大)并覆盖屏幕。其他元素将根据内容过渡淡化.这工作正常。

我无法获得重新进入过渡。按下后退按钮时,网格视图中的第一个元素将始终首先出现(它不跟随内容过渡(淡入淡出)),然后其他元素淡入。共享元素不会调整大小(变小)并加入其他元素。它与其他元素一起淡入,从而遵循内容转换样式。这是我的代码:

NowShowingFragment.java 包含带有图像的网格视图

在我的 OnCreateView-我使用 Picasso 从 web 加载图像。所以我首先从 Imageview 中提取位图并将其传递给 Activity,后者又将传递给下一个要显示的片段。(不知道这是否应该做完了)。

主要活动

在 NowShowingDetail - 这是将替换旧片段的新片段。它只会全屏显示共享元素。

change_image_transorm.xml


先感谢您。

编辑:使用相同的代码,我更改为活动转换方法。这完美无瑕。我认为我称之为片段转换的方式可能是错误的。您的意见表示赞赏。

0 投票
3 回答
5185 浏览

android - 共享元素过渡适用于 FragmentTransaction.replace() 但不适用于 FragmentTransaction.add()

当我使用片段“替换”时,新的共享元素转换有效,但我似乎无法使其工作片段“添加”。在这两种情况下,我都使用相同的容器。

更多细节:

活动-布局->

在启动 Activity 时,我将 Fragment1 添加到屏幕

在 Fragment1 布局中的视图的单击事件中 -> 我将 Fragment2 添加到屏幕上。我在第一个 Fragment 的 onCreateView 中设置了监听器

}

我在两个片段的布局中都有这个图像视图

FragmentTransaction.add()现在,如果我使用添加第二个片段,过渡不起作用,但如果我使用它,它会起作用FragmentTransaction.replace()。我怎样才能使它与 add() 一起工作?有可能吗?

0 投票
3 回答
4007 浏览

android - 使用 add() 而不是 replace() 的片段共享元素转换?

我正在尝试在片段之间进行共享元素转换,使用replace()添加第二个片段时一切正常,但是在代码库add()中使用了很多,但是使用它时,转换只是跳到结束值

是否可以在添加的片段之间进行过渡? 谢谢

0 投票
1 回答
2413 浏览

android - 显示替换片段的过渡

我有一个默认加载 Fragment StatsDetailFragment 的活动。

按下按钮后,我将使用以下代码将片段替换为另一个片段。

我正在使用自定义转换类为 ProjectEntryListFragment 设置输入转换

过渡效果很好。但我面临的问题是,当在 ProjectEntryListFragment 上执行显示动画时,StatsDetailFragment 已经被删除,导致显示动画在空白背景上播放。我希望它在 StatsDetailFragment 上播放,以便在 ProjectListFragment 上播放显示转换时,StatsDetailFragment 可见。

我尝试只添加新片段,但这只是在弹出后台堆栈时给我一个错误。

任何帮助将不胜感激。

0 投票
2 回答
99 浏览

android - 在 Android 中转换片段

在 Android 中转换片段的最简单方法是什么?

我正在努力寻求单线解决方案。

我尝试了什么:

我添加了一个转换 xml 文件:

我正在使用以下代码来应用上述转换:

我知道上面的代码是完全错误的,但这是我想要实现的,将一个非常简单的过渡应用到屏幕上的片段......

0 投票
0 回答
716 浏览

android - 如何将片段推迟到片段转换,如活动转换(postponeEnterTransition

如何在 Android Lollipop 中推迟 Fragment 的进入转换?

我在片段转换中遇到了麻烦。(共享元素过渡等。)我想让屏幕方向的片段过渡也做得很好。

经过几天的麻烦,终于在上面的链接中找到了以下评论,但我不明白。

如果您不删除 fragment1,而是将其隐藏,它将使您的生活更轻松。如果没有,则需要一个额外的步骤,但它的工作方式相同。

  • a) 添加 2,隐藏 2
  • b)显示2,隐藏,添加到后堆栈1
  • c) show 1, remove1, add to back stack。然后你检测到你第二次到达 (c),你等待 1 准备好然后以编程方式弹出回栈。

我不明白上面的场景。请逐步解释这一点。希望你的回答。

提前致谢。