From d6dbeb82edc9ba3b63b78f7ecaa05fee0a304cd1 Mon Sep 17 00:00:00 2001 From: "jaguhdeveloper@gmail.com" Date: Thu, 11 Jan 2024 18:09:07 +0300 Subject: [PATCH] added dynamic colors --- .../androiddeveloperroadmap/ui/theme/Theme.kt | 50 +++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/app/src/main/kotlin/io/getstream/androiddeveloperroadmap/ui/theme/Theme.kt b/app/src/main/kotlin/io/getstream/androiddeveloperroadmap/ui/theme/Theme.kt index bcfac78..70d7088 100644 --- a/app/src/main/kotlin/io/getstream/androiddeveloperroadmap/ui/theme/Theme.kt +++ b/app/src/main/kotlin/io/getstream/androiddeveloperroadmap/ui/theme/Theme.kt @@ -16,37 +16,59 @@ package io.getstream.androiddeveloperroadmap.ui.theme +import android.app.Activity +import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material.MaterialTheme -import androidx.compose.material.darkColors -import androidx.compose.material.lightColors +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.core.view.WindowCompat -private val DarkColorPalette = darkColors( +private val DarkColorScheme = darkColorScheme( primary = Purple200, - primaryVariant = Purple700, - secondary = Teal200 + secondary = Purple700, + tertiary = Teal200 ) -private val LightColorPalette = lightColors( +private val LightColorScheme = lightColorScheme( primary = Purple500, - primaryVariant = Purple700, - secondary = Teal200 + secondary = Purple700, + tertiary = Teal200 ) @Composable fun AndroidDeveloperRoadmapTheme( darkTheme: Boolean = isSystemInDarkTheme(), + dynamicColor: Boolean = true, content: @Composable () -> Unit ) { - val colors = if (darkTheme) { - DarkColorPalette - } else { - LightColorPalette + 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 + if (!view.isInEditMode) { + SideEffect { + val window = (view.context as Activity).window + window.statusBarColor = colorScheme.primary.toArgb() + WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + } } MaterialTheme( - colors = colors, + colorScheme = colorScheme, typography = Typography, shapes = Shapes, content = content