共享元素转换无法在Android Nougat上运行(API 25)

时间:2017-01-09 06:20:46

标签: android android-7.0-nougat android-7.1-nougat

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

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

在之前版本的Android上正常运行。

奇怪的行为。需要帮助

1 个答案:

答案 0 :(得分: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);