android – 使用Dialog Activity共享元素转换

前端之家收集整理的这篇文章主要介绍了android – 使用Dialog Activity共享元素转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我把一个非常简单的应用程序,使用Dialog主题( source code on github)开始活动时使用共享元素转换.

我得到以下结果:

你可以看到转换/动画有两个问题:

>动画仅在对话活动的区域可见,因此剪辑并看起来很丑.
>当我点击活动之外没有转换/动画
回去.

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

编辑:在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,但是它至少工作:

解决方法

活动过渡如此工作.当您开始第二个活动时,它将显示在您的第一个活动的顶部,具有透明背景.共享元素的位置与第一个活动相同,然后动画到第二个活动上指定的正确位置.

在你的情况下,你使用的是android:theme =“@ style / Theme.AppCompat.Dialog”,这意味着第二个活动的绘图区域的大小小于第一个活动的绘图区域的大小.这解释了在外部点击时的剪切和无转换.

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

猜你在找的Android相关文章