From 4bba34233f83a1dc99f6a73876f43b4333b07a82 Mon Sep 17 00:00:00 2001 From: SkyD666 Date: Sun, 5 Jan 2025 22:18:56 +0800 Subject: [PATCH] [feature] Add a theme color --- app/build.gradle.kts | 2 +- .../preference/appearance/ThemePreference.kt | 9 +- .../settings/appearance/AppearanceScreen.kt | 99 +++++++++++-------- app/src/main/res/values-ja-rJP/strings.xml | 10 ++ app/src/main/res/values-zh-rCN/strings.xml | 5 +- app/src/main/res/values/strings.xml | 5 +- 6 files changed, 81 insertions(+), 49 deletions(-) create mode 100644 app/src/main/res/values-ja-rJP/strings.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6f59125a..f883c516 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -22,7 +22,7 @@ android { minSdk = 24 targetSdk = 35 versionCode = 25 - versionName = "2.1-rc06" + versionName = "2.1-rc07" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/skyd/anivu/model/preference/appearance/ThemePreference.kt b/app/src/main/java/com/skyd/anivu/model/preference/appearance/ThemePreference.kt index 43dc7a14..6e85fb69 100644 --- a/app/src/main/java/com/skyd/anivu/model/preference/appearance/ThemePreference.kt +++ b/app/src/main/java/com/skyd/anivu/model/preference/appearance/ThemePreference.kt @@ -25,8 +25,9 @@ object ThemePreference : BasePreference { const val RED = "Red" const val GREEN = "Green" const val PURPLE = "Purple" + const val MAHIRO = "Mahiro" - val basicValues = arrayOf(BLUE, PINK, YELLOW, RED, GREEN, PURPLE) + val basicValues = arrayOf(BLUE, PINK, YELLOW, RED, GREEN, PURPLE, MAHIRO) val values: Array get() { @@ -65,6 +66,7 @@ object ThemePreference : BasePreference { RED -> context.getString(R.string.theme_red) GREEN -> context.getString(R.string.theme_green) PURPLE -> context.getString(R.string.theme_purple) + MAHIRO -> context.getString(R.string.theme_mahiro) else -> context.getString(R.string.unknown) } @@ -76,8 +78,9 @@ object ThemePreference : BasePreference { PINK -> Color(0xFFFF7AA3) YELLOW -> Color(0xFFFABE03) RED -> Color(0xFFB90037) - GREEN -> Color(0xFF406836) - PURPLE -> Color(0xFF65558F) + GREEN -> Color(0xFF3F975B) + PURPLE -> Color(0xFF7E6195) + MAHIRO -> Color(0xFFEAD4CE) else -> Color(0xFF006EBE) } } diff --git a/app/src/main/java/com/skyd/anivu/ui/screen/settings/appearance/AppearanceScreen.kt b/app/src/main/java/com/skyd/anivu/ui/screen/settings/appearance/AppearanceScreen.kt index a1e4d008..039aeeec 100644 --- a/app/src/main/java/com/skyd/anivu/ui/screen/settings/appearance/AppearanceScreen.kt +++ b/app/src/main/java/com/skyd/anivu/ui/screen/settings/appearance/AppearanceScreen.kt @@ -28,13 +28,17 @@ import androidx.compose.material.icons.outlined.Colorize import androidx.compose.material3.ColorScheme import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Scaffold import androidx.compose.material3.SegmentedButton import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.Surface import androidx.compose.material3.Text +import androidx.compose.material3.TooltipBox +import androidx.compose.material3.TooltipDefaults import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberTooltipState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -61,11 +65,11 @@ import com.skyd.anivu.model.preference.appearance.DateStylePreference import com.skyd.anivu.model.preference.appearance.NavigationBarLabelPreference import com.skyd.anivu.model.preference.appearance.TextFieldStylePreference import com.skyd.anivu.model.preference.appearance.ThemePreference -import com.skyd.anivu.ui.component.PodAuraTopBar -import com.skyd.anivu.ui.component.PodAuraTopBarStyle import com.skyd.anivu.ui.component.BaseSettingsItem import com.skyd.anivu.ui.component.CategorySettingsItem import com.skyd.anivu.ui.component.CheckableListMenu +import com.skyd.anivu.ui.component.PodAuraTopBar +import com.skyd.anivu.ui.component.PodAuraTopBarStyle import com.skyd.anivu.ui.component.SwitchSettingsItem import com.skyd.anivu.ui.local.LocalAmoledDarkMode import com.skyd.anivu.ui.local.LocalDarkMode @@ -341,6 +345,7 @@ fun Palettes( context.activity.recreate() } }, + contentDescription = { ThemePreference.toDisplayName(context, t) }, accents = remember(u) { listOf( TonalPalette.from(u.primary), @@ -358,6 +363,7 @@ fun SelectableMiniPalette( modifier: Modifier = Modifier, selected: Boolean, onClick: () -> Unit, + contentDescription: () -> String, accents: List, ) { Surface( @@ -365,49 +371,60 @@ fun SelectableMiniPalette( shape = RoundedCornerShape(16.dp), color = MaterialTheme.colorScheme.inverseOnSurface, ) { - Surface( - modifier = Modifier - .clickable { onClick() } - .padding(12.dp) - .size(50.dp), - shape = CircleShape, - color = Color(accents[0].tone(60)), + TooltipBox( + modifier = modifier, + positionProvider = TooltipDefaults.rememberTooltipPositionProvider(), + tooltip = { + PlainTooltip { + Text(contentDescription()) + } + }, + state = rememberTooltipState() ) { - Box { - Surface( - modifier = Modifier - .size(50.dp) - .offset((-25).dp, 25.dp), - color = Color(accents[1].tone(85)), - ) {} - Surface( - modifier = Modifier - .size(50.dp) - .offset(25.dp, 25.dp), - color = Color(accents[2].tone(75)), - ) {} - val animationSpec = spring(stiffness = Spring.StiffnessMedium) - AnimatedVisibility( - visible = selected, - enter = scaleIn(animationSpec) + fadeIn(animationSpec), - exit = scaleOut(animationSpec) + fadeOut(animationSpec), - ) { - Box( + Surface( + modifier = Modifier + .clickable(onClick = onClick) + .padding(12.dp) + .size(50.dp), + shape = CircleShape, + color = Color(accents[0].tone(60)), + ) { + Box { + Surface( + modifier = Modifier + .size(50.dp) + .offset((-25).dp, 25.dp), + color = Color(accents[1].tone(85)), + ) {} + Surface( modifier = Modifier - .padding(10.dp) - .fillMaxSize() - .clip(CircleShape) - .background(MaterialTheme.colorScheme.primary), - contentAlignment = Alignment.Center + .size(50.dp) + .offset(25.dp, 25.dp), + color = Color(accents[2].tone(75)), + ) {} + val animationSpec = spring(stiffness = Spring.StiffnessMedium) + AnimatedVisibility( + visible = selected, + enter = scaleIn(animationSpec) + fadeIn(animationSpec), + exit = scaleOut(animationSpec) + fadeOut(animationSpec), ) { - Icon( - imageVector = Icons.Outlined.Check, - contentDescription = "Checked", + Box( modifier = Modifier - .padding(8.dp) - .size(16.dp), - tint = MaterialTheme.colorScheme.surface - ) + .padding(10.dp) + .fillMaxSize() + .clip(CircleShape) + .background(MaterialTheme.colorScheme.primary), + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = Icons.Outlined.Check, + contentDescription = "Checked", + modifier = Modifier + .padding(8.dp) + .size(16.dp), + tint = MaterialTheme.colorScheme.surface + ) + } } } } diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml new file mode 100644 index 00000000..580a7691 --- /dev/null +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -0,0 +1,10 @@ + + + 後藤ひとり + 古明地 こいし + 山田リョウ + 伊地知虹夏 + 喜多郁代 + 刻晴 + 緒山まひろ + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 28b03fcd..46152d57 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -133,11 +133,12 @@ 配置主题、外观等 动态主题 波奇 - 绿帽绿 + 古明地恋 山田凉 虹夏 喜多 - 基佬紫 + 刻晴 + 真寻 外观 +85s 按钮 在播放进度条上方显示 +85s 按钮 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54118506..d554f22f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -138,11 +138,12 @@ Configure theme, appearance Dynamic Bocchi - Green + Komeiji Koishi Ryo Nijika Kita - Purple + Keqing + Mahiro +85s Appearance +85s button