更新应用主题和颜色配置
This commit is contained in:
@@ -2,21 +2,23 @@ package com.huaga.life_echo.ui.theme
|
||||
|
||||
import androidx.compose.ui.graphics.Color
|
||||
|
||||
// New color scheme based on design
|
||||
val DeepPurple = Color(0xFF200028)
|
||||
val SlatePurple = Color(0xFF8C8EA3)
|
||||
val MediumPurple = Color(0xFFA177A6)
|
||||
val Lavender = Color(0xFFCEB0DA)
|
||||
val Blush = Color(0xFFDBBABA)
|
||||
val Cream = Color(0xFFFAF7F8)
|
||||
// 浅紫色配色方案 - 基于UI样例图
|
||||
val LightPurple = Color(0xFFB18FCE) // 主要浅紫色,用于标题栏和强调元素
|
||||
val LightPurpleAlt = Color(0xFFC8A2C8) // 替代浅紫色
|
||||
val DeepPurple = Color(0xFF6B4C93) // 深紫色,用于标题和选中状态
|
||||
val LightPurpleBackground = Color(0xFFF5F0F8) // 浅紫色背景
|
||||
val White = Color(0xFFFFFFFF)
|
||||
val LightGray = Color(0xFFE0E0E0) // 浅灰色,用于未选中状态
|
||||
val DarkGray = Color(0xFF424242) // 深灰色,用于主要文字
|
||||
val MediumGray = Color(0xFF9E9E9E) // 中等灰色,用于辅助文字
|
||||
val LightGrayText = Color(0xFFBDBDBD) // 浅灰色文字
|
||||
|
||||
// For dark theme
|
||||
val Purple80 = Lavender
|
||||
val PurpleGrey80 = SlatePurple
|
||||
val Pink80 = Blush
|
||||
val Purple80 = LightPurple
|
||||
val PurpleGrey80 = MediumGray
|
||||
val Pink80 = LightPurpleAlt
|
||||
|
||||
// For light theme
|
||||
val Purple40 = MediumPurple
|
||||
val PurpleGrey40 = SlatePurple
|
||||
val Pink40 = Blush
|
||||
val Purple40 = DeepPurple
|
||||
val PurpleGrey40 = MediumGray
|
||||
val Pink40 = LightPurple
|
||||
@@ -9,53 +9,80 @@ import androidx.compose.material3.dynamicDarkColorScheme
|
||||
import androidx.compose.material3.dynamicLightColorScheme
|
||||
import androidx.compose.material3.lightColorScheme
|
||||
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.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(
|
||||
primary = Lavender,
|
||||
secondary = SlatePurple,
|
||||
tertiary = Blush,
|
||||
background = DeepPurple,
|
||||
surface = DeepPurple,
|
||||
onPrimary = DeepPurple,
|
||||
primary = LightPurple, // 保持浅紫色主色不变
|
||||
secondary = LightPurpleAlt,
|
||||
tertiary = LightPurple,
|
||||
background = Color(0xFF000000), // 黑色背景
|
||||
surface = Color(0xFF000000), // 黑色表面
|
||||
onPrimary = White,
|
||||
onSecondary = White,
|
||||
onTertiary = DeepPurple,
|
||||
onBackground = White,
|
||||
onSurface = White
|
||||
onTertiary = White,
|
||||
onBackground = White, // 白色文字在黑色背景上
|
||||
onSurface = White // 白色文字在黑色表面上
|
||||
)
|
||||
|
||||
private val LightColorScheme = lightColorScheme(
|
||||
primary = MediumPurple,
|
||||
secondary = SlatePurple,
|
||||
tertiary = Blush,
|
||||
background = Cream,
|
||||
primary = LightPurple, // 浅紫色作为主色
|
||||
secondary = LightPurpleAlt,
|
||||
tertiary = LightPurple,
|
||||
background = White, // 白色背景
|
||||
surface = White,
|
||||
onPrimary = White,
|
||||
onSecondary = DeepPurple,
|
||||
onTertiary = DeepPurple,
|
||||
onBackground = DeepPurple,
|
||||
onSurface = DeepPurple
|
||||
onPrimary = White, // 白色文字在紫色背景上
|
||||
onSecondary = White,
|
||||
onTertiary = White,
|
||||
onBackground = DarkGray, // 深灰色文字在白色背景上
|
||||
onSurface = DarkGray
|
||||
)
|
||||
|
||||
@Composable
|
||||
fun LifeechoTheme(
|
||||
darkTheme: Boolean = isSystemInDarkTheme(),
|
||||
darkTheme: Boolean? = null, // 如果为null,则使用AppSettings中的值
|
||||
// Dynamic color is available on Android 12+
|
||||
dynamicColor: Boolean = true,
|
||||
dynamicColor: Boolean = false, // 禁用动态颜色以保持浅紫色主题
|
||||
content: @Composable () -> Unit
|
||||
) {
|
||||
// 使用AppSettings中的状态,这样当设置变化时会触发重组
|
||||
val isDarkMode = darkTheme ?: AppSettings.rememberDarkMode()
|
||||
val isLargeFont = AppSettings.rememberLargeFontMode()
|
||||
|
||||
val colorScheme = when {
|
||||
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
|
||||
val context = LocalContext.current
|
||||
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
|
||||
if (isDarkMode) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
|
||||
}
|
||||
darkTheme -> DarkColorScheme
|
||||
isDarkMode -> DarkColorScheme
|
||||
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(
|
||||
colorScheme = colorScheme,
|
||||
typography = Typography,
|
||||
typography = adjustedTypography,
|
||||
content = content
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user