【问题标题】:Shared element transition with Dialog Activity与 Dialog Activity 共享元素转换
【发布时间】:2015-02-13 20:08:13
【问题描述】:

我组装了一个非常简单的应用程序,它在使用对话框主题 (source code on github) 启动活动时使用共享元素转换。

我得到了以下结果:

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

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

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

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

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

<style name="AppTheme.Transparent" parent="AppTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>

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

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

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

【问题讨论】:

标签: android android-5.0-lollipop shared-element-transition


【解决方案1】:

活动转换是这样工作的。当您开始第二个活动时,它会以透明背景显示在第一个活动的顶部。共享元素的定位方式与它们在第一个活动上的方式相同,然后动画到第二个活动上指定的正确位置。

在您的情况下,您使用的是 android:theme="@style/Theme.AppCompat.Dialog" 这意味着第二个活动的绘图区域的大小小于第一个活动的大小。这解释了在外部单击时的剪辑和无过渡。

您想要做的是摆脱该主题,并使用深色背景/阴影实现自己的布局,以便能够执行平滑过渡。

【讨论】:

  • 这更像是一种解决方法,但我会尝试一下
  • 这行得通,我将编辑问题以提供有关如何操作的详细说明。
猜你喜欢
  • 2021-04-05
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
相关资源
最近更新 更多