更新应用主题和颜色配置

This commit is contained in:
徐在坤
2026-01-17 19:34:55 +08:00
parent 8bb8a05898
commit bbb701f583
2 changed files with 65 additions and 36 deletions

View File

@@ -2,21 +2,23 @@ package com.huaga.life_echo.ui.theme
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
// New color scheme based on design // 浅紫色配色方案 - 基于UI样例图
val DeepPurple = Color(0xFF200028) val LightPurple = Color(0xFFB18FCE) // 主要浅紫色,用于标题栏和强调元素
val SlatePurple = Color(0xFF8C8EA3) val LightPurpleAlt = Color(0xFFC8A2C8) // 替代浅紫色
val MediumPurple = Color(0xFFA177A6) val DeepPurple = Color(0xFF6B4C93) // 深紫色,用于标题和选中状态
val Lavender = Color(0xFFCEB0DA) val LightPurpleBackground = Color(0xFFF5F0F8) // 浅紫色背景
val Blush = Color(0xFFDBBABA)
val Cream = Color(0xFFFAF7F8)
val White = Color(0xFFFFFFFF) val White = Color(0xFFFFFFFF)
val LightGray = Color(0xFFE0E0E0) // 浅灰色,用于未选中状态
val DarkGray = Color(0xFF424242) // 深灰色,用于主要文字
val MediumGray = Color(0xFF9E9E9E) // 中等灰色,用于辅助文字
val LightGrayText = Color(0xFFBDBDBD) // 浅灰色文字
// For dark theme // For dark theme
val Purple80 = Lavender val Purple80 = LightPurple
val PurpleGrey80 = SlatePurple val PurpleGrey80 = MediumGray
val Pink80 = Blush val Pink80 = LightPurpleAlt
// For light theme // For light theme
val Purple40 = MediumPurple val Purple40 = DeepPurple
val PurpleGrey40 = SlatePurple val PurpleGrey40 = MediumGray
val Pink40 = Blush val Pink40 = LightPurple

View File

@@ -9,53 +9,80 @@ import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.material3.lightColorScheme import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.sp
import com.huaga.life_echo.ui.settings.AppSettings
private val DarkColorScheme = darkColorScheme( private val DarkColorScheme = darkColorScheme(
primary = Lavender, primary = LightPurple, // 保持浅紫色主色不变
secondary = SlatePurple, secondary = LightPurpleAlt,
tertiary = Blush, tertiary = LightPurple,
background = DeepPurple, background = Color(0xFF000000), // 黑色背景
surface = DeepPurple, surface = Color(0xFF000000), // 黑色表面
onPrimary = DeepPurple, onPrimary = White,
onSecondary = White, onSecondary = White,
onTertiary = DeepPurple, onTertiary = White,
onBackground = White, onBackground = White, // 白色文字在黑色背景上
onSurface = White onSurface = White // 白色文字在黑色表面上
) )
private val LightColorScheme = lightColorScheme( private val LightColorScheme = lightColorScheme(
primary = MediumPurple, primary = LightPurple, // 浅紫色作为主色
secondary = SlatePurple, secondary = LightPurpleAlt,
tertiary = Blush, tertiary = LightPurple,
background = Cream, background = White, // 白色背景
surface = White, surface = White,
onPrimary = White, onPrimary = White, // 白色文字在紫色背景上
onSecondary = DeepPurple, onSecondary = White,
onTertiary = DeepPurple, onTertiary = White,
onBackground = DeepPurple, onBackground = DarkGray, // 深灰色文字在白色背景上
onSurface = DeepPurple onSurface = DarkGray
) )
@Composable @Composable
fun LifeechoTheme( fun LifeechoTheme(
darkTheme: Boolean = isSystemInDarkTheme(), darkTheme: Boolean? = null, // 如果为null则使用AppSettings中的值
// Dynamic color is available on Android 12+ // Dynamic color is available on Android 12+
dynamicColor: Boolean = true, dynamicColor: Boolean = false, // 禁用动态颜色以保持浅紫色主题
content: @Composable () -> Unit content: @Composable () -> Unit
) { ) {
// 使用AppSettings中的状态这样当设置变化时会触发重组
val isDarkMode = darkTheme ?: AppSettings.rememberDarkMode()
val isLargeFont = AppSettings.rememberLargeFontMode()
val colorScheme = when { val colorScheme = when {
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
val context = LocalContext.current val context = LocalContext.current
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) if (isDarkMode) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
} }
darkTheme -> DarkColorScheme isDarkMode -> DarkColorScheme
else -> LightColorScheme else -> LightColorScheme
} }
// 根据大字模式调整字体大小
val adjustedTypography = if (isLargeFont) {
Typography.copy(
bodyLarge = Typography.bodyLarge.copy(fontSize = 18.sp),
bodyMedium = Typography.bodyMedium.copy(fontSize = 16.sp),
bodySmall = Typography.bodySmall.copy(fontSize = 14.sp),
titleLarge = Typography.titleLarge.copy(fontSize = 24.sp),
titleMedium = Typography.titleMedium.copy(fontSize = 20.sp),
titleSmall = Typography.titleSmall.copy(fontSize = 18.sp),
headlineLarge = Typography.headlineLarge.copy(fontSize = 32.sp),
headlineMedium = Typography.headlineMedium.copy(fontSize = 28.sp),
headlineSmall = Typography.headlineSmall.copy(fontSize = 24.sp)
)
} else {
Typography
}
MaterialTheme( MaterialTheme(
colorScheme = colorScheme, colorScheme = colorScheme,
typography = Typography, typography = adjustedTypography,
content = content content = content
) )
} }