android - 在加载 Compose 应用程序时消除白色背景的初始闪烁
问题描述
我使用主要变体颜色作为整个应用程序的背景,但在最初加载 UI 时,我仍然看到一个白屏。有什么办法吗?
编辑:我创建了一个新的空项目并应用了@Philip Dukhov 的波纹管建议。结果还是一样。在 Surface 开始加载之前,白屏首先出现并在屏幕上停留至少两秒钟。
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
SOIssueReproduceTheme {
Surface(
color = MaterialTheme.colors.primaryVariant,
modifier = Modifier.fillMaxSize()
) {
Greeting("Android")
}
}
}
}
}
@Composable
fun Greeting(name: String) {
Text(text = "Hello $name!")
}
谢谢你的帮助!
解决方案
我找到了解决这个问题的方法。我们可以通过从主题中向窗口添加背景颜色来避免这种白色闪烁,如下所示:
res/values/themes/themes.xml
<style name="Theme.OfflineCaching"
parent="Theme.MaterialComponents.DayNight.DarkActionBar">
...
<item name="android:windowBackground">@color/purple_700</item>
</style>
在两个主题文件上为浅色和深色主题设置此项。
推荐阅读
- c# - 不安全的 C#:如何将数据从 IntPtr 复制到 byte*?
- algorithm - 二维码生成算法实现案例分析
- angular - 停止在每个 ngOnInit() 上调用 API
- java - JPEGCodec 依赖 OpenJDK
- python - 如何在python中从其上下三角形的2个向量创建相关矩阵?
- bash - 如何在 AWK 计算之前添加 if 语句
- ios - React-native-firebase Bigimage 在 ios 中不起作用
- cmd - 如何查询然后杀死批处理文件中的服务(新手)
- python - NumPy 中的索引:访问每组其他值
- mysql - 仅为用户或数据库禁用 ONLY_FULL_GROUP_BY MySQL 模式