首页 > 解决方案 > makeSceneTransitionAnimation 在 Android 11 及更高版本上旋转后导致黑屏

问题描述

使用共享元素过渡后会导致黑屏。这就是我重现此错误的方式:

  1. 用 开始详细活动ActivityOptionsCompat.makeSceneTransitionAnimation
  2. 旋转屏幕。
  3. 使用返回手势(或按钮)返回原始 Activity。

黑屏错误

代码非常简单,但这里是:

在第一个屏幕中,OverviewActivity:

override fun onPictureClicked(view: View, picture: Picture, position: Int) {
    startActivity(
        GalleryActivity.createIntent(this, position),
        ActivityOptionsCompat.makeSceneTransitionAnimation(
            this,
            view,
            view.transitionName
        ).toBundle()
    )
}

在第二个屏幕中,GalleryActivity 我确保在正确的视图上设置了 transitionName。完整的项目可以在这里查看https://github.com/nos-digital/imagin/tree/master/example

此代码在版本 11 以下的 Android 版本上运行良好,但从 Android 11 开始,这会导致屏幕旋转后出现黑屏。退出黑屏的唯一方法是使用多任务处理或等待未知时间。

我可以在 Google Pixel 3 以及其他物理设备上始终如一地重现此错误。我也在 Android 11 和 Android 12 模拟器上重现了它,但这里不太一致。

我想知道如何防止这个错误。

标签: androidanimationtransition

解决方案


将此添加到 rour 活动样式中,问题将得到解决:

<item name="android:windowIsTranslucent">true</item>

推荐阅读