问题标签 [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 投票
2 回答
1980 浏览

android - 共享元素转换 - 片段

我在这里推送了我的示例应用程序:https ://bitbucket.org/user1010/transitiondemo

我在我的应用程序中遵循主从模式。主片段 ( MyRecyclerFragment/ MyListFragment) 显示文本视图列表。当用户单击任何这些文本视图时,MyDetailsFragment将启动详细信息片段 ( )。详细信息片段具有标题(与用户单击的标题相同)。

我正在尝试实现以下过渡效果:

  • 展开现有视图的过渡
  • 出现视图的淡入淡出过渡
  • 在这两个片段之间共享的 TextView 的移动/翻译转换

问题:

  • 过渡开始时,共享的 TextView 消失。但是,如果单击列表的第一项,则共享转换会奇迹般地起作用。
  • 如果更改详细信息布局,则过渡有效。请看details.xml。如果我完全删除 FrameLayouttitle_bar并将 TextViewtitle作为根 LinearLayout 的直接子级,则共享元素转换效果很好。
  • 似乎震中因共享元素返回过渡而发生了变化。例如,如果我单击列表中的第 7 个 TextView,退出转换(爆炸)会将该 TextView 作为震中。它上面的所有TextViews 向上滑动,它下面的TextViews 向下滑动。但是在从细节片段返回到主片段时,返回过渡的中心不是被点击的 TextView。
0 投票
0 回答
929 浏览

android - 片段 ReenterTransition 不起作用。需要帮助澄清各种片段转换

我正在 RecyclerView 中的项目之间实现 Fragment 过渡动画,以及显示单击项目详细信息的 Fragment。换句话说,相对常见的...

“单击列表中的卡片,它会展开为详细视图,而列表的其余部分会消失”

...之类的事情。

从 RecyclerView 项目到详细视图的转换工作正常。该项目的共享元素正在转换到它们的新状态,而其余的 RecyclerView 项目消失。

但是,当 BackStack 弹出时,共享元素会转换回它们的旧状态,但其他 RecyclerView 项不会淡入。相反,它们会在动画开始时立即出现,正如您在此屏幕视频中看到的那样

该活动处理相当多的片段,因此我使用以下通用方法进行事务:

  • 我尝试过在 Enter/Return 上允许/禁止过渡重叠。
  • 我尝试过使用 Fragments 的各种过渡设置方法。
  • 我已经阅读了大量关于这个主题的博客和 SO 问题。

我发现http://www.androiddesignpatterns.com/2014/12/activity-fragment-transitions-in-android-lollipop-part1.html关于这个主题的博客,以及brockoli 的示例代码很有帮助,但一直无法解决问题。


也许这是我对每个过渡的理解的问题?
这是我的理解。

mCurrentFragmentnewFragment每个都有 5 个不同的转换设置器:

  1. setSharedElementEnterTransition设置将用于传输到内容场景的共享元素的转换。
  2. setSharedElementReturnTransition设置将用于在返回堆栈弹出期间传回的共享元素的转换。
  3. setEnterTransition设置将用于将视图移动到初始场景中的转换。
  4. setExitTransition设置当片段被移除、隐藏或在不弹出返回堆栈时分离时将用于将视图移出场景的转换。
  5. setReenterTransition设置由于弹出回栈而返回时将用于将视图移动到场景中的转换。

当我的setFragment方法被调用时,会播放一个动画,从mCurrentFragmentnewFragment具有以下属性:

  • SharedElementEnterTransitionnewFragment定义了共享元素将如何转换为newFragment.
    (在我的情况下,单击项目的 CardView 展开并且它包含的 TextView 之一被移动)
  • EnterTransitionnewFragment定义了剩余的非共享元素newFragment的子视图如何过渡到屏幕上。 (在我的情况下,工具栏在屏幕底部淡入。实际上,工具栏正在退出的 RecyclerView 后面淡入。有没有办法交换它所以它在前面?)
  • mCurrentFragmentExitTransition 定义了非共享元素mCurrentFragment的子视图将如何从屏幕过渡。 (在我的例子中只包含 RecyclerView,所以效果是其余的 RecyclerView 元素在后台逐渐消失)
    mCurrentFragment

当 BackStack 被弹出时,我预计会发生以下情况:

  • SharedElementReturnTransitionmCurrentFragment定义了共享元素如何转换回mCurrentFragment.
    (在我的情况下, CardView 收缩回 RecyclerView 项目大小,并且它包含的 TextView 被移回)。
  • ExitTransitionnewFragment定义了非共享元素newFragment的子视图如何从屏幕过渡。 (在我的情况下,底部工具栏淡出)
  • ReenterTransitionmCurrentFragment定义了剩余的不是共享元素mCurrentFragment的子视图将如何转换回屏幕。 (在我的情况下,其他 RecyclerView 项目应该淡出,但这没有发生。它们在过渡共享元素后面立即可见)。

我有什么误解吗?

0 投票
3 回答
2773 浏览

android - Android - 具有全高清显示的滞后片段过渡

我在我的应用程序的登录部分有一个简单的动画片段转换 - 请参阅 anim.xml。片段具有来自 xml 中可绘制对象的背景设置,除非我在具有全高清显示的智能手机上测试它,否则一切正常。过渡突然变得迟缓。任何人都知道可能导致这种情况的原因是什么?两种背景的分辨率均为 1080*1920。

anim.xml - 动画示例(其中 4 个用于两侧的进出动画)

0 投票
2 回答
510 浏览

android - 交易后android片段不显示前一个位置

让我们考虑一下我有 2fragment a & b

片段 a 包含视图寻呼机、水平网格视图和带有滚动的按钮图像等。当我点击其中的一个项目时 ,当我点击后退按钮时,它又Fragment a回到. 一切工作完美。fragment bfragment bfragment a

我的问题是在后按,它从头开始fragment b加载。fragment a我想显示fragment a交易开始的确切位置(比如底部)。

我正在每个项目的适配器中进行所有片段事务,代码如下所示。

从其他片段返回时如何加载片段事务开始位置。

0 投票
1 回答
1030 浏览

android - 如何在主/详细窗格布局中将共享元素 ImageView 从 ListView 片段动画化到详细视图片段

我的应用程序平板电脑布局在左侧包含一个网格视图 (RecyclerView),其中包含一个图像网格,右侧是一个详细信息视图,它显示当前所选网格视图图像的较小版本以及描述该图像的附加文本视图。我试图弄清楚如何提供一个共享元素动画过渡,它将任何单击的图像视图(在左侧网格视图片段中)滑动并缩放到其在详细信息视图片段中的匹配位置。我的应用程序只需要一个“进入”转换,因为我不希望每个图像选择都记录在后台堆栈上。

我尝试在我的OnItemClick(View view)处理程序中使用标准共享元素支持调用,如下所示:

“视图”变量是用户在网格视图中单击的 ImageView。我的细节片段的onCreate()方法也包含条目

我也在使用以下 change_image_transform.xml 转换集:

随着

所有这些设置都适用于单窗格模式。当用户在网格视图活动中单击图像时,详细信息片段(在新活动中)将替换网格视图,并且动画对于进入和返回场景都非常有效。

然而,在 2 窗格模式下,图像不会从网格视图中的源滑动和缩放到新创建的细节片段中的目标。我相信我遇到的问题是由于源 ImageView 存在于永久可见的网格视图片段中,因此没有包含在动画框架的转换处理中。

除了一个模糊的建议使用简单的自定义动画外,我的搜索没有找到任何明确的答案。我尝试了一个简单的 TranslateAnimation(没有缩放)作为测试,但这有两个问题:它不允许图像穿过网格视图片段的边界,并且它具有实际“移动”图像的不良副作用(离开在执行动画时,我的网格视图中有一个临时空白点)。最终,所需的效果是看到图像滑动并从源缩放到目标,而不会导致原始图像被擦除。

任何建议或意见,将不胜感激。

0 投票
0 回答
458 浏览

android - Fragment Transition - 推迟到 RecyclerView 布局相关元素

我正在推迟两个片段之间的转换,这两个片段都包含RecyclerViews创建片段的技巧,隐藏它并且只在RecyclerView准备好时显示它......

就像这里解释得很好:https ://halfthought.wordpress.com/2015/06/04/postponing-fragment-transitions/

我的问题是,这不起作用,因为在预绘制时,recyclerview 的视图似乎没有正确布局RecyclerView,这会导致错误的转换(在我的情况下,子视图RecyclerView计算它们的大小onCreateViewHolder并且必须完成在转运开始之前)。现在我调整了我的适配器,当所有相关视图都绑定时适配器会报告,这样我就可以继续转换,但这不起作用,因为那时RecyclerView它不会开始布置它的子视图,可能是因为RecyclerView不是还看得见……

RecyclerView即使它是隐藏的,我可以以某种方式强制布局它的孩子吗?还有其他建议吗?

0 投票
2 回答
53 浏览

android - android中的片段转换......!

请看看这个模式。可能吗 ???

片段 A > 片段 B > 片段 C > 片段 D > 片段 E

索引 0 > 索引 1 > 索引 2 > 索引 3 > 索引 4

现在我想要什么:>>>

Fragment E切换到Fragment B而不删除Fragment D 和 C也不会再次添加 Fragment E。并且索引可能不会因此受到影响,因为如果从 B > C > D Press back else 我需要打开 Fragment E 将作为像以前一样工作。

谢谢

0 投票
1 回答
287 浏览

android - ListViewFragment(包含ListView的Fragment)只创建一次,第一次

我试图ListView在下载JSON数据后更新数据,但它没有用,因为onCreate方法onCreateView只在第一次工作。当我将调试点指向这两种方法时,我注意到了这一点,但调试行从未进入那里。响应 json 正确,但无法通过解析更新 UI ListViewFragment.init(myNewDataList)。这是我的 ListViewFragment,

在 JSON 下载后,我将数据解析为片段,如下面的片段,这是AsyncHttpClient'sonSuccess方法。

我怀疑我的 ListViewFragment 第一次只发生一次,因为它与Utils.replaceFragment() 中的BackStack事务内容混淆。

有什么帮助吗?

0 投票
2 回答
97 浏览

android - 片段过渡

我正在我的应用程序中创建一个导航流,其中有三个片段。这是完整的场景,

  • 片段 A(获取 OTP)
  • 片段 B(确认 OTP)
  • 片段 C(更改密码)

用户导航将从片段 A 开始。用户将输入用户名和请求以获取 OTP。我们在 XML 布局中添加了 Fragment A。

Fragment B 动态添加并且 addToBackStack("fragmentB") 也。因此,当我们单击返回按钮时,popupbackstack 工作正常。

验证确认会将用户带到 Fragment C(更改密码)屏幕,现在如果用户单击返回,它应该将用户带到第一个屏幕并跳过 Fragment B。为此,如果我用 Fragment B 替换 Fragment C,则在后按 Fragment 保留在那里并且不会弹回来。

这是分别添加和替换片段 B 和 C 的代码。

编辑:

0 投票
4 回答
16207 浏览

android - 使用 FragmentTransaction 将数据发送到片段

我在我的片段类中调用这个:

它只是用选择的一个替换我当前的片段。

我的问题是,如何String使用 FragmentTransaction 从我的父片段向我的子片段发送一些数据(例如值)?