加载 Compose 应用程序时消除白色背景的初始闪烁

Raw*_*san 9 android kotlin android-jetpack-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!")
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

Raw*_*san 10

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

资源/值/主题/themes.xml

<style name="Theme.OfflineCaching" 
    parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        ...
        <item name="android:windowBackground">@color/purple_700</item>
</style>
Run Code Online (Sandbox Code Playgroud)

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