问题标签 [shared-element-transition]

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 回答
6266 浏览

android - 与 Dialog Activity 共享元素转换

我整理了一个非常简单的应用程序,它在使用 Dialog 主题(github 上的源代码)启动活动时使用共享元素转换。

我得到以下结果:

示例应用

如您所见,过渡/动画存在两个问题:

  1. 动画仅在对话框活动区域中可见,因此它会剪辑并且看起来很难看。
  2. 当我在活动外部点击返回时,没有过渡/动画。

我该如何解决这些问题?任何帮助,将不胜感激。

编辑:在 Quanturium 的回答之后,我做了以下事情来让它工作:

使用以下主题而不是 Dialog 主题:

使用 CardView 作为 Dialog 外观以及圆角和阴影的背景。

调用finishAfterTransition(); 当用户在 CardView 之外点击时。

现在看起来像这样(代码),CardView 需要改进以更好地匹配 Dialog,但它至少可以工作。:

在职的

0 投票
1 回答
16522 浏览

android - Android棒棒糖共享元素过渡闪烁/闪烁

我在 Lollipop 上的共享元素转换中看到了奇怪的东西。共享元素在开始动画之前闪烁(请参见视频https://www.youtube.com/watch?v=DCoyyC_S-9A

我不知道为什么会这样。但是,当我添加<item name="android:windowSharedElementsUseOverlay">false</item>到我的主题时,我看不到闪烁,但过渡看起来并不好(它们看起来只有一半在动画“隐藏”动画的后半部分)。

其他过渡设置:

我正在使用 ActivityCompat 和 ActivityOptionsCompat 开始活动:

第一项活动:

第二个活动:

include_mini_player.xml

片段迷你播放器:

你有什么想法为什么会发生?

0 投票
1 回答
385 浏览

android - Android Activity 过渡 - ListView 分隔线可见时间过长

在我探索 Activity Transitions 的过程中,我遇到了 ListView 的问题(不幸的是我还没有迁移到 RecyclerView :()

在过渡期间,ListView 默认分隔线在很短的时间内可见(参见视频https://www.youtube.com/watch?v=nHZCzQF3XOg&spfreload=10 )。

我不知道它为什么会发生以及如何让它停止这样做。或者也许是时候迁移到 RecyclerView 了;-)?

0 投票
6 回答
10420 浏览

android-fragments - Android - Recyclerview 共享元素过渡项位置

我希望你能帮助我解决这个问题。我有两个片段,第一个是带有几张图像的回收视图,第二个片段是这些图像的详细信息视图。如果用户单击图像,应用程序会执行片段事务并显示详细信息。

我已经成功实现了片段之间的共享元素转换,如果我单击第一个片段上的小图像,它会变大并移动到详细信息视图上的最终位置。

那么,问题来了,图像的初始位置不是预期的,它开始从其原始位置移动几个像素,当我单击图像时,图像会向右和底部跳跃一点。

为什么会这样?这很烦人!

过渡xml:

如果我对 recyclerview 之外的按钮执行相同的操作,它会完美运行。这是recyclerview中的某种错误吗?

0 投票
1 回答
3614 浏览

android - Android Lollipop 中的共享元素转换故障

我正在尝试在 ListView 的 Master Detail 情况下进行 Android 5.0 共享元素转换。我正在发送图像。

我在进入转换时遇到了一个小故障,在主活动转换出来时,图像根本没有移动。加载 Detail 活动后,Image 从屏幕的左上角开始并动画到它的最终位置。返回过渡效果完美 - 图像从它的细节位置动画到 Master 中的正确位置。

这是它的样子: https ://www.youtube.com/watch?v=AzyA8i27qWc

我已经正确设置了我认为的权限,并指定了转换:

该转换定义为:

根据它们在列表中的位置,我为这两个视图赋予了相同的唯一transitionName 属性。

我正在使用 makeSceneTransitionAnimation 来制作动画:

(我还将导航栏指定为共享以避免它淡出,效果很好)

我不明白为什么返回转换工作正常,但输入转换却不行。我已经看到其他问题的解决方案是延迟输入转换,我尝试过这样做,但问题仍然存在。这是我在 Detail 活动中添加到 onCreate 的内容:

在我的详细活动中,没有 transitionName 元素,但我在代码中设置它。传入活动(详细信息)的相关部分是:

很高兴发布其他相关代码。有任何想法吗?

解决了

Android 开发 Google+ 页面中的用户 Chris P 为我解决了这个问题。在 onClick 方法的主活动中,我有:

解决方案是将该行替换为:

我猜调用适配器的 getView 方法是重新创建视图本身 - 我猜该方法应该只在首次创建列表时调用。

0 投票
1 回答
7521 浏览

android - FEATURE_ACTIVITY_TRANSITIONS 与 FEATURE_CONTENT_TRANSITIONS

我在理解这两个Window标志之间的区别时遇到了一些麻烦,并且不能 100% 确定何时需要使用它们以及为什么。

文档Window.FEATURE_ACTIVITY_TRANSITIONS说:

通过发送或接收使用 makeSceneTransitionAnimation(Activity, Pair[]) 或创建的 ActivityOptions 捆绑包,使活动能够运行活动转换makeSceneTransitionAnimation(Activity, View, String)

并且文档Window.FEATURE_CONTENT_TRANSITIONS说:

用于请求窗口内容更改的标志应使用TransitionManager.

使用TransitionManager设置 setTransitionManager(TransitionManager)。如果没有设置,TransitionManager将使用默认值。

文档说明以下Window方法需要FEATURE_ACTIVITY_TRANSITIONS启用该标志,但没有说明是否也FEATURE_CONTENT_TRANSITIONS需要启用该标志(请注意,根据源代码,默认情况下FEATURE_ACTIVITY_TRANSITIONStrueFEATURE_CONTENT_TRANSITIONS是针对材料主题的应用程序):false

  • get{Enter,Exit,Return,Reenter}Transition()
  • set{Enter,Exit,Return,Reenter}Transition()
  • getSharedElement{Enter,Exit,Return,Reenter}Transition()
  • setSharedElement{Enter,Exit,Return,Reenter}Transition()
  • getTransitionBackgroundFadeDuration()
  • setTransitionBackgroundFadeDuration()

换句话说,似乎基于此信息FEATURE_ACTIVITY_TRANSITIONS的是应用程序需要启用的功能标志才能使用 Lollipop 的新 Activity Transition API。然而,让我感到困惑的是, Android 开发者网站上的这篇文章指出,FEATURE_CONTENT_TRANSITIONS为了实现自定义活动转换,需要启用 。

所以这是我的问题:

  1. 这两个标志有什么区别?在这种情况下,“活动转换”和“内容转换”有什么区别?
  2. 为什么默认FEATURE_ACTIVITY_TRANSITIONS启用和FEATURE_CONTENT_TRANSITIONS禁用?何时FEATURE_CONTENT_TRANSITIONS真正需要启用标志?
  3. FEATURE_ACTIVITY_TRANSITIONS感觉禁用和启用是否有意义FEATURE_CONTENT_TRANSITIONS?或者是否也FEATURE_CONTENT_TRANSITIONS需要FEATURE_ACTIVITY_TRANSITIONS启用?

谢谢!

0 投票
1 回答
2398 浏览

android - 片段之间的共享元素转换

我正在尝试创建一个类似于播放音乐的共享元素过渡元素。当您单击卡片时,专辑封面会展开到新片段中的 ImageView。然后,当您单击返回时,它会动画回到卡片中。我的进入动画运行良好,但问题是返回或退出过渡。每当我回到上一个片段时,应用程序就会崩溃。这是我得到的错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean android.support.v4.app.Fragment.getAllowReturnTransitionOverlap()”

这是我执行动画/过渡的方式:

change_image_transform.xml

content_frame 位于活动的布局视图中,因此两个片段都包含在其中。

我的问题是:如何正确使用带有片段的共享元素转换?谢谢!

0 投票
0 回答
1217 浏览

android - 片段共享元素转换在嵌套视图中不起作用

我有一个共享元素过渡动画的奇怪问题(可能是过渡库中的错误)。目标Android version5.0

这是我的布局:

我有 2 个片段(FragmentAFragmentB)。FragmentAimageViewA并且FragmentBimageViewA更大的尺寸。共享元素转换定义正确,FragmentB打开时imageViewA动画正确。

它仅在FragmentA添加到content_frame容器(根容器)时才起作用。如果我要添加FragmentAcontent_main容器中 - 动画根本不起作用。

  • 如果我向content_second容器添加一些视图 - 动画不起作用。
  • 如果我将content_second容器保持为空 - 动画不起作用。
  • 即使我删除content_second容器 - 动画也不起作用。

两个片段将被添加到同一个容器中(使用FragmentTransaction.replace)。

0 投票
4 回答
7681 浏览

android - 方向更改后Android反向共享元素转换?

对于共享元素转换,我正在关注这个github 项目。它有 2 个屏幕 - 一个带有 recyclerview 的卡片数量,第二个是详细屏幕。正如预期的那样,它展示了从 recyclerview 项目到详细屏幕的 imageview 和 textview 的共享元素转换以及后按时的反向转换。

但是,如果用户在详细信息屏幕上更改方向,然后按下返回按钮,则反向过渡动画不起作用。在 2:49 到 2:57 之间查看视频的帧,即使在方向改变之后似乎也是可能的。对此有任何想法吗?

编辑:

请查看此视频以获得更好的理解。

0 投票
1 回答
2453 浏览

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

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

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

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

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

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

主要活动

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

change_image_transorm.xml


先感谢您。

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