如果通过深层链接打开应用程序,则共享元素过渡将不起作用

问题描述 投票:0回答:1

我添加了共享元素过渡,以从活动A启动活动B。如果应用通过深层链接启动并显示“活动A”视图,则正常情况下共享元素过渡有效,但不起作用。

活动B启动模式:SingleTask

android shared-element-transition launchmode
1个回答
0
投票

第一个解决方案解决此问题的一种方法是从Deeplink启动无UI活动(RouterActivity),并形成此活动,您可以尝试使用动画启动。内部路由器活动在onCreate中设置了主题。

 getTheme().applyStyle(R.style.NO_UI, true);

风格

  <style name="Theme.NO_UI" 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:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>

并使用onCreate()中的动画启动屏幕。

第二解决方案定义样式的动画:在您的styles.xml中定义新的动画样式,如下所示

    <style name="MyTheme.Window" parent="@android:style/Animation.Activity">
      <item name="android:activityOpenEnterAnimation">@anim/your_desired_animation</item>

然后按如下所示在主题(themes.xml)中设置此样式:

<style name="MyTheme" parent="@android:style/Theme">
      <item name="android:windowAnimationStyle">@style/MyTheme.Window</item>
</style>

然后您可以按照以下步骤将这些主题简单地设置为AndroidManifest.xml中的每个活动:

<activity 
  android:name="your_activity" 
  android:theme="@style/MyTheme">
</activity>
© www.soinside.com 2019 - 2024. All rights reserved.