首页 > 解决方案 > 在加载 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!")
}

谢谢你的帮助!

标签: androidkotlinandroid-jetpack-compose

解决方案


我找到了解决这个问题的方法。我们可以通过从主题中向窗口添加背景颜色来避免这种白色闪烁,如下所示:

res/values/themes/themes.xml

<style name="Theme.OfflineCaching" 
    parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        ...
        <item name="android:windowBackground">@color/purple_700</item>
</style>

在两个主题文件上为浅色和深色主题设置此项。


推荐阅读