共享元素过渡 - 仅对共享视图的可见部分进行动画处理

Posted

技术标签:

【中文标题】共享元素过渡 - 仅对共享视图的可见部分进行动画处理【英文标题】:Shared element transition - animate only the visible part of the shared view 【发布时间】:2018-07-14 10:35:09 【问题描述】:

我正在使用类似于 Google 日历的应用程序...

    有事件,当用户单击一个事件时,事件会增长并且 转换为详细视图。 共享视图(事件)位于 ScrollView 中,因此在某些情况下 指出这些视图可能部分可见。 问题是选择一个部分可见视图,完整视图 首先出现,然后动画开始运行。

这里是问题的捕获:

我可以做些什么来让 Transition 只使用 View 的可见部分来对其进行动画处理?

这是我的过渡:

<changeBounds xmlns:android="http://schemas.android.com/apk/res/android">
   <arcMotion android:minimumHorizontalAngle="15"
       android:minimumVerticalAngle="0"
       android:maximumAngle="90"/>
</changeBounds>

【问题讨论】:

你能在 github 上分享一个具有这种行为的简单项目吗? 【参考方案1】:

共享元素绘制在整个视图层次结构之上。您可以通过在您的活动中设置Window#setSharedElementsUseOverlay(false) 来禁用此功能,但这会导致不良影响。更多详情 here 和 YouTube。

更好的解决方案是在 Fragment 之间使用共享元素过渡。更多详情here.

【讨论】:

即使我设置了 setSharedElementsUseOverlay(false) 问题仍然存在。 @OscarMéndez 恐怕,如果没有示例项目,将很难为您提供帮助。唯一有趣的部分是:您的活动(或片段)的布局以及您如何启动它们。只需创建一个虚拟视图并在此处发布它们,这样更好地在 Github 上创建一个示例项目。 当然我会在 github 上创建一个虚拟项目并展开我的问题。

以上是关于共享元素过渡 - 仅对共享视图的可见部分进行动画处理的主要内容,如果未能解决你的问题,请参考以下文章

Android 5.X 新特性详解——Activity过渡动画

在过渡动画期间在两个视图控制器之间共享图像

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

Android——浅析Activity过渡动画

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

具有 scaleType centerCrop 过渡的共享元素跳跃