首页 > 解决方案 > 启动现有单任务活动时活动场景转换不起作用

问题描述

我正在将场景转换应用于活动。说我有 2 个活动:MainActivitywith launch modesingleTaskNextActivitywith launch mode 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>

在以下情况下:

  1. MainActivity通过以下方式开始NextActivity

    startActivity(Intent(this,NextActivity::class.java), ActivityOptions.makeSceneTransitionAnimation(this).toBundle())
    
  2. 场景一之后,NextActivity返回MainActivityviafinishAfterTransition()

  3. 方案一结束后,NextActivity返回MainActivityvia:

    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 中)在这里

标签: androidandroid-activityandroid-transitions

解决方案


推荐阅读