Android共享元素过渡——防止共享元素被绘制

Posted

技术标签:

【中文标题】Android共享元素过渡——防止共享元素被绘制【英文标题】:Android Shared element transition - prevent shared element from being drawn 【发布时间】:2018-07-14 14:27:58 【问题描述】:

我正在使用自定义 Transition 仅对 Shared View 的可见部分进行动画处理,以防它部分可见。

发生这种情况是因为Shared ViewConstraitLayout 内,而ConstraitLayoutScrollView 内。

我在另一个问题中提到了这个问题: Shared element transition - animate only the visible part of the shared view

这是系统选择的默认transition

这是我工作的地方:

动画本身效果很好......但问题是系统在动画开始之前绘制了完整的共享视图......并且有一个难看的眨眼。

如何防止这种情况发生?

我已经有了自己的风格:

<item name="android:windowSharedElementsUseOverlay">false</item>

【问题讨论】:

您能提供一个指向您项目的 GitHub 链接吗?仅添加相关文件即可解决此问题。 【参考方案1】:

在您的目标 Activity 中,添加一个与源 Activity 中相同的 ActionBar,使其自然覆盖您的共享元素。 您可能需要在活动之间传递额外内容以配置目标 ActionBar。

【讨论】:

我不明白为什么我必须在目标活动中添加相同的工具栏,除了这只是一个例子,如果覆盖 SharedView 的视图不是工具栏并且在另一个位置怎么办在屏幕上

以上是关于Android共享元素过渡——防止共享元素被绘制的主要内容,如果未能解决你的问题,请参考以下文章

android-如何从标记位图开始共享元素过渡?

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

Android:无法使用 Google Maps Fragment 进行共享元素转换

如何实现与视频的共享元素过渡

Android——浅析Activity过渡动画

如何启动2活性之间共享单元的过渡?