在Android 7(Nougat)上面对共享元素过渡动画的问题
在我的情况下,活动A使用共享元素转换调用活动B并按回B完成它并显示A.现在on onStart永远不会被调用。
在之前版本的Android上正常运行。
奇怪的行为。需要帮助
答案 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);