使用Dialog Activity进行共享元素转换

时间:2015-02-13 20:08:13

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

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

我得到了以下结果:

sample app

正如您所看到的,过渡/动画有两个问题:

  1. 动画仅在对话框活动的区域中可见,因此它会剪辑并看起来很难看。
  2. 当我在活动之外点击时,没有过渡/动画 回去。
  3. 我该如何解决这些问题?任何帮助将不胜感激。

    编辑:在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作为对话框外观以及圆角和阴影的背景。

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

    现在它看起来像这样(code),CardView需要精炼以更好地匹配Dialog,但它至少有效。:

    working

1 个答案:

答案 0 :(得分:10)

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

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

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