问题标签 [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 回答
3635 浏览

android - 片段到片段转换:推迟EnterTransition() 不起作用

我正在使用 Android X 转换在同一个托管 Activity 中通过两个片段之间的运动为内容设置动画。

我正在尝试为 ImageView 设置动画,该 ImageView 加载了 Glide 和 URL。

我遇到的问题是,无论两个 ImageViews 的大小如何,在加载图像之前它们的大小都是 0,因此,过渡捕获了错误的布局值,因此显示了缩小的动画(动画到大小为 0)。

我已经阅读了关于使用postponeEnterTransition()which should 与startPostponedEnterTransition()延迟两个呼叫之间持续时间的转换相关的内容。

这是架构:

  • 片段A,图像在屏幕底部,宽度为屏幕宽度的一半。
  • 片段 B,图像在屏幕顶部,宽度为屏幕宽度。

在片段 A 的图像点击时,片段 B 被加载。

在片段 B 中onCreate,我使用setSharedElementEnterTransition(transitions). 然后我立即打电话postponeEnterTransition()

在 Fragment BonCreateView中,在布局膨胀之后,我等待 ImageView 被预先绘制(使用 ViewTreeObserver),然后我调用startPostponedEnterTransition().

在我的转换上使用断点和侦听器,在我到达预绘制回调之前触发 listener#onTransitionStarted,这证明转换捕获了错误的布局值。

postponeEnterTransition()此外,另一个没有任何效果的证明,删除调用startPostponedEnterTransition()不会永远保持转换。

我究竟做错了什么 ?当然,当回到片段A时,同样的收缩动画也在播放……

0 投票
1 回答
405 浏览

android - 动画片段上滑和下滑

我想在其入口处向上滑动一个片段并在其出口处向下滑动它。这应该很简单,但我遇到了问题。

动画代码:向下滑动->

向上滑动 ->

这是我的片段转换代码:

但我没有得到想要的结果。而且我不想替换片段,但总是添加片段。

0 投票
1 回答
914 浏览

android - 带有 RecyclerView 的 Fragment 中的 Android 10 (Q) 过渡共享元素视图被卡在固定位置

我通常自己解决问题,但这次我真的很生气,找不到合适的解决方法。

设想:

我有两个片段,比如说AB

Fragment A 中,我正在从 Rest API 填充 RecyclerView(后来只有 RV)。

片段 B中,我有 CollapsingToolbarLayout 的“详细视图”。

当我单击RV中的项目时,我正在打开带有过渡的片段 B和一个共享元素,即AppCompatImageView,我在其中设置了本地可绘制对象。在Fragment B中是CollapsingToolbarLayout内的图像。

共享元素过渡在片段 B 中有效 - 图像被正确移动。当我单击后退按钮并且图像移回到其在 RV 中的原始位置时,转换也有效。

但是这里出现了一个我无法解决的问题。在两个片段中,特定图像被卡在位置上,并且当我滚动 RV 或 CollapsingToolbarLayout 视图没有改变 - 在片段 A 中,图像在滚动 RV 时没有移动,而在片段 B 中,图像在折叠/展开更改时没有隐藏。

有没有人遇到过这个问题,因为我不理解,也真的不理解这种行为。经过多年的发展,从来没有发生在我身上。

这是从 Fragment B 返回后的 Fragment A的截图:

在这里,我正在执行带有转换的片段事务:

在这里,我在 Fragment A 中设置返回转换回调(在 onViewCreated 中调用):

在片段 B 中相同,但进入转换(在 onViewCreated 中调用):

在片段 B 中,我还在 onViewCreated 函数中将 transitionName 分配给 ImageView:

并且还在 RV 适配器中设置动态转换名称:

设备:谷歌 Pixel 3、Android 10

请注意,如果我不使用转换回调,则返回转换不起作用,但片段 B 中的输入转换问题保持不变。

在这种情况下,我感到很失落。任何帮助将不胜感激。我尝试了很多东西。谢谢。


更新!:

似乎此问题仅与 Android 10 有关!我尝试了我的旧小米,它可以工作。我在这里创建了问题,所以希望它会得到解决。这真的很烦人。我会在这个中保持更新。

0 投票
2 回答
346 浏览

android - Android - 片段转换时出现空白屏幕

我使用自定义片段动画。xml文件如下:

从下到上:

从上到下:

此示例按预期工作:

但是这个例子对我不起作用。我在过渡时看到空白屏幕。Fragment A 消失,FragmentB 上升时出现黑屏。

0 投票
1 回答
84 浏览

java - Android:在 FragmentTransaction ,beginTransaction 方法中出现错误

我已经了解 Fragment ,当我尝试Fragment通过点击进行更改Button并且应用程序被强制停止时,它会给出这样的错误

中的错误消息Logcat

实际上我想通过单击按钮更改片段,任何开发人员请解决此问题。

主要活动:

上面的代码有一个警告FragmentTransaction ft = fm.beginTransaction();

活动_xml:

0 投票
0 回答
66 浏览

android - Android 片段过渡:仅在必要时调用推迟EnterTransition()

我正在研究使用片段转换,基本示例对我来说很好。

我的请求很简单,我有一个寻呼机片段,它是许多其他导航片段的目的地。

所以我只想在必要时才这样postponeEnterTransition()做。startPostponedEnterTransition()

因为我只会在一些原创片段中启用花哨的过渡,而不是在所有片段中。

有没有像“ isEnterTransitionAvailable()”这样的方法?

非常感谢。

0 投票
0 回答
18 浏览

android - 使用 Transition 框架移动视图

我正在尝试使用 xml 中的过渡框架创建类似于 translateX/translateY 的动画。在从片段 A 导航到 B 时,B 有一些视图需要从与最终位置不同的位置(在屏幕范围内)移动。我试图实现这一点,<patternPathMotion>但它不会接受<targets>。也Slide只能为屏幕外的对象设置动画。您还可以指导我看一些使用android.transition(ChangeBounds, ChangeTransform, ...) 子类的教程或示例代码;因为所有的文章都只谈论SharedElementTransition:-(

0 投票
1 回答
183 浏览

android - 如何在 exitTransition 上方显示片段的 enterTransition

我想在 exitTransition 的顶部显示 enterTransition。

但正如您在 gif 中看到的,enterTransition 位于 exitTransition 下方。

我怎么解决这个问题?

navigation component用于片段转换。

在此处输入图像描述

EnterFragment.kt

退出片段.kt

nav_main.xml

0 投票
1 回答
403 浏览

android - Android多个共享元素不适用于片段

我想在具有两个共享元素的片段之间转换。但问题是:只有一个动画。

共享元素取自第一个片段中列表的 viewHolder。我使用的过渡来自材料库,正是这些https://medium.com/androiddevelopers/material-motion-with-mdc-c1f09bb90bf9

片段 A:

片段 B:

似乎只有我在 commit{} 中添加的最后一个元素是转换的元素。我检查了所有内容,转换名称是唯一的,所有数据都在第二个片段中,所有转换名称,这不是参数问题。有任何想法吗?非常感谢您的帮助,这是一个非常重要的客户请求。

0 投票
1 回答
110 浏览

android - 共享元素过渡 - 视图数

共享元素从一个视图过渡到另一个视图是否需要包含相同数量的子视图?我的经验是,如果不是这种情况,则会出现以下崩溃:

添加空视图通常可以解决问题。我在文档中找不到任何关于此的内容,因此提出了这个问题。