【问题标题】:Shared element transition is not working, if app open through deep link如果应用程序通过深层链接打开,共享元素转换不起作用
【发布时间】:2020-05-25 10:56:13
【问题描述】:

我添加了共享元素转换以从活动 A 启动活动 B。 通常共享元素转换可以正常工作,但如果应用通过深层链接启动并显示 Activity A 视图,则它无法正常工作。

Activity B 启动模式:SingleTask

【问题讨论】:

    标签: android shared-element-transition launchmode


    【解决方案1】:

    第一个解决方案 解决此问题的一种方法是从深度链接启动 No UI Activity(RouterActivity) 并形成此活动,您可以尝试使用动画启动。 在 onCreate 中设置 Router Activity 的内部主题。

     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>
    

    【讨论】:

      猜你喜欢
      • 2016-06-26
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      相关资源
      最近更新 更多