我正在将场景过渡应用于“活动”。说我有2个活动:MainActivity
(具有启动模式singleTask
和NextActivity
,具有启动模式standard
。它们具有相同的主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
在以下情况下:
MainActivity
通过以下方式启动NextActivity
:
startActivity(Intent(this,NextActivity::class.java), ActivityOptions.makeSceneTransitionAnimation(this).toBundle())
场景1之后,NextActivity
通过MainActivity
返回到finishAfterTransition()
场景1之后,NextActivity
通过以下方式返回到MainActivity
:
startActivity(Intent(this,MainActivity::class.java), ActivityOptions.makeSceneTransitionAnimation(this).toBundle())
由于MainActivity
处于singleTask
启动模式,因此2和3应该导致相同的任务堆栈行为:NextActivity
完成并且将用户带回到MainActivity
。
现在的问题是,在1和2中,过渡播放正确,但是在3中,过渡不播放。详细地,NextActivity
保留默认动画(向下滑动到屏幕外),而MainActivity
保持透明,并且可见墙纸,但不可重复。
在过渡侦听器中添加一些println
行之后,我发现在3中,NextActivity
的退出过渡已启动,尽管显示不正确。并且MainActivity
的重新进入转换尚未开始。
这种奇怪行为的原因是什么?
作为参考,活动的代码(在Kotlin中)为here。