skema warna untuk mode gelap
This commit is contained in:
parent
502ae78685
commit
5f4f7ed743
75
app/src/main/java/com/example/kalkulatorbmi/theme.kt
Normal file
75
app/src/main/java/com/example/kalkulatorbmi/theme.kt
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
package com.example.kalkulatorbmi.ui.theme
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.os.Build
|
||||||
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
|
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.Color
|
||||||
|
import androidx.compose.ui.graphics.toArgb
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.platform.LocalView
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
|
|
||||||
|
// Skema Warna untuk Mode Gelap
|
||||||
|
private val DarkColorScheme = darkColorScheme(
|
||||||
|
primary = PinkPrimaryDark,
|
||||||
|
secondary = PinkSecondaryDark,
|
||||||
|
tertiary = PinkTertiaryDark,
|
||||||
|
background = Color(0xFF1C1B1F), // Latar belakang gelap standar
|
||||||
|
surface = Color(0xFF1C1B1F),
|
||||||
|
onPrimary = White,
|
||||||
|
onSecondary = White,
|
||||||
|
onTertiary = Black,
|
||||||
|
onBackground = White,
|
||||||
|
onSurface = White,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Skema Warna untuk Mode Terang
|
||||||
|
private val LightColorScheme = lightColorScheme(
|
||||||
|
primary = PinkPrimary,
|
||||||
|
secondary = PinkSecondary,
|
||||||
|
tertiary = PinkTertiary,
|
||||||
|
background = LightPinkBackground, // Latar belakang putih ke-pink-an
|
||||||
|
surface = White, // Card dan surface lainnya tetap putih bersih
|
||||||
|
onPrimary = White,
|
||||||
|
onSecondary = Black,
|
||||||
|
onTertiary = Black,
|
||||||
|
onBackground = Black,
|
||||||
|
onSurface = Black,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun KalkulatorBMITheme(
|
||||||
|
darkTheme: Boolean = isSystemInDarkTheme(),
|
||||||
|
dynamicColor: Boolean = false, // Matikan dynamic color agar tema pink kita yang dipakai
|
||||||
|
content: @Composable () -> Unit
|
||||||
|
) {
|
||||||
|
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(
|
||||||
|
colorScheme = colorScheme,
|
||||||
|
typography = Typography,
|
||||||
|
content = content
|
||||||
|
)
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user