共享元素转换不适用于 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);
在 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);