更新应用主题和颜色配置
This commit is contained in:
@@ -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
|
||||||
@@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user