0

在 Android 7 (Nougat) 上面临共享元素过渡动画的问题

在我的情况下,活动 A 使用共享元素转换调用活动 B,然后按 B 完成它并显示 A。现在永远不会在 A 上调用 onStart。

在以前的 Android 版本上运行良好。

奇怪的行为。需要帮忙

4

1 回答 1

2

我通过在代码中定义进入和退出转换而不是在 -> 中定义它解决了这个问题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向活动添加任何内容之前添加):

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());
    }

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

于 2017-03-07T07:52:53.290 回答