[Jetpack Compose] 记录一下实现状态栏导航栏透明、应用界面可覆盖两栏、深色浅色模式自适应、应用 Material You 的代码

val colorScheme = when {
    dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
        val context = LocalContext.current
        if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
    }
    darkTheme -> DarkColorScheme
    else -> LightColorScheme
}
val view = LocalView.current
val window = (view.context as Activity).window
if (!view.isInEditMode) {
    SideEffect {
        WindowCompat.setDecorFitsSystemWindows(window, false)
        window.navigationBarColor = Color.Transparent.toArgb()
        WindowInsetsControllerCompat(window, view).let {
            it.isAppearanceLightStatusBars = !darkTheme
        }
    }
}

MaterialTheme(
    colorScheme = colorScheme,
    typography = ...,
    content = ...
)
posted @ 2022-09-24 17:14  摘叶飞镖  阅读(177)  评论(0编辑  收藏  举报