android - makeSceneTransitionAnimation 在 Android 11 及更高版本上旋转后导致黑屏
问题描述
使用共享元素过渡后会导致黑屏。这就是我重现此错误的方式:
- 用 开始详细活动
ActivityOptionsCompat.makeSceneTransitionAnimation
。 - 旋转屏幕。
- 使用返回手势(或按钮)返回原始 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 模拟器上重现了它,但这里不太一致。
我想知道如何防止这个错误。
解决方案
将此添加到 rour 活动样式中,问题将得到解决:
<item name="android:windowIsTranslucent">true</item>
推荐阅读
- ionic3 - ionic3 错误 AndroidManifest.xml:53:66-112 需要占位符替换,但没有值
提供? - python - 如何在 Python 中从一页中抓取和索引多个表?
- reactjs - React + Axios 进度条
- build - 最小的 Yocto 图像发行功能
- sql - 在不知道每个表中哪些字段是唯一的情况下,如何在使用 T-SQL 的连接中从每个表中检索不同行的计数?
- node.js - 无法使用 ng serve 运行 Angular 应用程序
- c++ - 为什么当我尝试从成员函数调用构造函数时 IDE 会给出警告?
- c# - 向玩家位置实例化子弹
- tensorflow - 是否有任何工具/库可以将 tensorflow lstm 模型转换为 .mlmodel 格式以在 iOS 应用程序中运行
- javascript - 选择除 main 内的特定元素外的整个元素