共享元素转换不适用于 Android 牛轧糖 (API 25)

Shared Element Transition not working on Android Nougat (API 25)

在 Android 7 (Nougat)

上遇到共享元素过渡动画问题

在我的例子中 Activity A 使用共享元素转换调用 Activity B,然后按回 B 完成它并显示 A。现在永远不会调用 A 上的 onStart。

在 Android 的早期版本上工作正常。

奇怪的行为。需要帮助

我通过在代码中定义进入和退出转换而不是在 themes.xml 中定义它解决了这个问题 -> 我从 themes.xml:

中删除了以下代码行
 <item name="android:windowEnterTransition" tools:targetApi="lollipop">
        @transition/fade
    </item>
    <item name="android:windowExitTransition" tools:targetApi="lollipop">
        @transition/fade_out
    </item>

    <item name="android:windowReturnTransition" tools:targetApi="lollipop">
        @transition/fade_out
    </item>

    <item name="android:windowSharedElementEnterTransition" tools:targetApi="lollipop">
        @transition/change_image_trans
    </item>
    <item name="android:windowSharedElementExitTransition" tools:targetApi="lollipop">
        @transition/change_image_trans_out
    </item>

    <item name="android:windowSharedElementReturnTransition" tools:targetApi="lollipop">
        @transition/change_image_trans_out
    </item>

并在我的活动中添加了以下几行(您必须先在 onCreate 中添加,然后才能向 activity 添加任何内容):

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        // inside your activity (if you did not enable transitions in your theme)
        getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
        // set an enter transition

        getWindow().setEnterTransition(new Explode());
        // set an exit transition
        getWindow().setExitTransition(new Explode());
    }

使用此代码,我只是为 activity 设置了转换 - 如果您还想更改内容转换,则需要调用 getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);