问题标签 [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.
android - 与 Dialog Activity 共享元素转换
我整理了一个非常简单的应用程序,它在使用 Dialog 主题(github 上的源代码)启动活动时使用共享元素转换。
我得到以下结果:
如您所见,过渡/动画存在两个问题:
- 动画仅在对话框活动区域中可见,因此它会剪辑并且看起来很难看。
- 当我在活动外部点击返回时,没有过渡/动画。
我该如何解决这些问题?任何帮助,将不胜感激。
编辑:在 Quanturium 的回答之后,我做了以下事情来让它工作:
使用以下主题而不是 Dialog 主题:
使用 CardView 作为 Dialog 外观以及圆角和阴影的背景。
调用finishAfterTransition(); 当用户在 CardView 之外点击时。
现在看起来像这样(代码),CardView 需要改进以更好地匹配 Dialog,但它至少可以工作。:
android - Android棒棒糖共享元素过渡闪烁/闪烁
我在 Lollipop 上的共享元素转换中看到了奇怪的东西。共享元素在开始动画之前闪烁(请参见视频https://www.youtube.com/watch?v=DCoyyC_S-9A)
我不知道为什么会这样。但是,当我添加<item name="android:windowSharedElementsUseOverlay">false</item>
到我的主题时,我看不到闪烁,但过渡看起来并不好(它们看起来只有一半在动画“隐藏”动画的后半部分)。
其他过渡设置:
我正在使用 ActivityCompat 和 ActivityOptionsCompat 开始活动:
第一项活动:
第二个活动:
include_mini_player.xml
片段迷你播放器:
你有什么想法为什么会发生?
android - Android Activity 过渡 - ListView 分隔线可见时间过长
在我探索 Activity Transitions 的过程中,我遇到了 ListView 的问题(不幸的是我还没有迁移到 RecyclerView :()
在过渡期间,ListView 默认分隔线在很短的时间内可见(参见视频https://www.youtube.com/watch?v=nHZCzQF3XOg&spfreload=10 )。
我不知道它为什么会发生以及如何让它停止这样做。或者也许是时候迁移到 RecyclerView 了;-)?
android-fragments - Android - Recyclerview 共享元素过渡项位置
我希望你能帮助我解决这个问题。我有两个片段,第一个是带有几张图像的回收视图,第二个片段是这些图像的详细信息视图。如果用户单击图像,应用程序会执行片段事务并显示详细信息。
我已经成功实现了片段之间的共享元素转换,如果我单击第一个片段上的小图像,它会变大并移动到详细信息视图上的最终位置。
那么,问题来了,图像的初始位置不是预期的,它开始从其原始位置移动几个像素,当我单击图像时,图像会向右和底部跳跃一点。
为什么会这样?这很烦人!
过渡xml:
如果我对 recyclerview 之外的按钮执行相同的操作,它会完美运行。这是recyclerview中的某种错误吗?
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 方法是重新创建视图本身 - 我猜该方法应该只在首次创建列表时调用。
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_TRANSITIONS
是true
和FEATURE_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
为了实现自定义活动转换,需要启用 。
所以这是我的问题:
- 这两个标志有什么区别?在这种情况下,“活动转换”和“内容转换”有什么区别?
- 为什么默认
FEATURE_ACTIVITY_TRANSITIONS
启用和FEATURE_CONTENT_TRANSITIONS
禁用?何时FEATURE_CONTENT_TRANSITIONS
真正需要启用标志? FEATURE_ACTIVITY_TRANSITIONS
感觉禁用和启用是否有意义FEATURE_CONTENT_TRANSITIONS
?或者是否也FEATURE_CONTENT_TRANSITIONS
需要FEATURE_ACTIVITY_TRANSITIONS
启用?
谢谢!
android - 片段之间的共享元素转换
我正在尝试创建一个类似于播放音乐的共享元素过渡元素。当您单击卡片时,专辑封面会展开到新片段中的 ImageView。然后,当您单击返回时,它会动画回到卡片中。我的进入动画运行良好,但问题是返回或退出过渡。每当我回到上一个片段时,应用程序就会崩溃。这是我得到的错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean android.support.v4.app.Fragment.getAllowReturnTransitionOverlap()”
这是我执行动画/过渡的方式:
change_image_transform.xml
content_frame 位于活动的布局视图中,因此两个片段都包含在其中。
我的问题是:如何正确使用带有片段的共享元素转换?谢谢!
android - 片段共享元素转换在嵌套视图中不起作用
我有一个共享元素过渡动画的奇怪问题(可能是过渡库中的错误)。目标Android version
是5.0
。
这是我的布局:
我有 2 个片段(FragmentA
和FragmentB
)。FragmentA
有imageViewA
并且FragmentB
有imageViewA
更大的尺寸。共享元素转换定义正确,FragmentB
打开时imageViewA
动画正确。
但它仅在FragmentA
添加到content_frame
容器(根容器)时才起作用。如果我要添加FragmentA
到content_main
容器中 - 动画根本不起作用。
- 如果我向
content_second
容器添加一些视图 - 动画不起作用。 - 如果我将
content_second
容器保持为空 - 动画不起作用。 - 即使我删除
content_second
容器 - 动画也不起作用。
两个片段将被添加到同一个容器中(使用FragmentTransaction.replace
)。
android - 在共享元素片段转换方面需要帮助
我需要有关片段到片段转换的帮助。我不清楚如何正确地做到这一点,因为我能找到的文档很少。
我有一个带有电影海报的 GridView。当单击一张海报时,它将移动到下一个片段。海报是共享元素,它将调整大小(变大)并覆盖屏幕。其他元素将根据内容过渡淡化.这工作正常。
我无法获得重新进入过渡。按下后退按钮时,网格视图中的第一个元素将始终首先出现(它不跟随内容过渡(淡入淡出)),然后其他元素淡入。共享元素不会调整大小(变小)并加入其他元素。它与其他元素一起淡入,从而遵循内容转换样式。这是我的代码:
NowShowingFragment.java 包含带有图像的网格视图
在我的 OnCreateView-我使用 Picasso 从 web 加载图像。所以我首先从 Imageview 中提取位图并将其传递给 Activity,后者又将传递给下一个要显示的片段。(不知道这是否应该做完了)。
主要活动
在 NowShowingDetail - 这是将替换旧片段的新片段。它只会全屏显示共享元素。
change_image_transorm.xml
先感谢您。
编辑:使用相同的代码,我更改为活动转换方法。这完美无瑕。我认为我称之为片段转换的方式可能是错误的。您的意见表示赞赏。