From e5601df0b5109bd3517e4b9b1768847a5537b139 Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Mon, 9 Feb 2026 08:54:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=B8=BB=E9=A2=98=E8=89=B2?= =?UTF-8?q?=E6=9D=BF=E5=92=8C=E6=B7=B1=E8=89=B2=E6=A8=A1=E5=BC=8F=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=99=A8=E5=BD=A2=E7=8A=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 +- .../appearance/darkmode/DarkModeItem.kt | 19 +++++++++++++++++-- .../appearance/darkmode/DarkModePicker.kt | 2 ++ .../appearance/palette/PaletteItem.kt | 17 +++++++++++++++-- .../appearance/palette/PalettePicker.kt | 2 ++ 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 26af231..1da6ee0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -38,7 +38,7 @@ android { applicationId = "cn.super12138.todo" minSdk = 24 targetSdk = 36 - versionCode = 988 + versionCode = 989 versionName = "2.3.3" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt index 77e4778..e48a1ba 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt @@ -5,16 +5,21 @@ import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsPressedAsState import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.material3.ButtonShapes +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -23,24 +28,34 @@ import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp +import cn.super12138.todo.ui.TodoDefaults +import cn.super12138.todo.ui.theme.shapeByInteraction import cn.super12138.todo.utils.VibrationUtils +@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun DarkModeItem( + modifier: Modifier = Modifier, @DrawableRes iconRes: Int, name: String, contentColor: Color, containerColor: Color, selected: Boolean, onSelect: () -> Unit, - modifier: Modifier = Modifier + shapes: ButtonShapes = TodoDefaults.shapes() ) { val view = LocalView.current + + val interactionSource = remember { MutableInteractionSource() } + val pressed by interactionSource.collectIsPressedAsState() + val animatedShape = shapeByInteraction(shapes, pressed, TodoDefaults.shapesDefaultAnimationSpec) + val borderWidth by animateDpAsState(if (selected) 3.dp else (-1).dp) Column( modifier = modifier - .clip(MaterialTheme.shapes.large) + .clip(animatedShape) .clickable( + interactionSource = interactionSource, role = Role.Button, onClick = { VibrationUtils.performHapticFeedback(view) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt index 9f6ceac..4d5a070 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt @@ -3,6 +3,7 @@ package cn.super12138.todo.ui.pages.settings.components.appearance.darkmode import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.lazy.items +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue @@ -16,6 +17,7 @@ import cn.super12138.todo.logic.model.DarkMode import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.ui.pages.settings.components.LazyRowSettingsItem +@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun DarkModePicker( modifier: Modifier = Modifier, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt index 93a26ac..d85a1e9 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt @@ -5,6 +5,8 @@ import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsPressedAsState import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -14,10 +16,13 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.material3.ButtonShapes +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -30,26 +35,34 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastForEach import cn.super12138.todo.logic.model.ContrastLevel import cn.super12138.todo.logic.model.PaletteStyle +import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.ui.theme.dynamicColorScheme +import cn.super12138.todo.ui.theme.shapeByInteraction import cn.super12138.todo.utils.VibrationUtils +@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun PaletteItem( + modifier: Modifier = Modifier, isDynamicColor: Boolean, isDark: Boolean, paletteStyle: PaletteStyle, contrastLevel: ContrastLevel, selected: Boolean, onSelect: () -> Unit, - modifier: Modifier = Modifier + shapes: ButtonShapes = TodoDefaults.shapes() ) { val view = LocalView.current + val interactionSource = remember { MutableInteractionSource() } + val pressed by interactionSource.collectIsPressedAsState() + val animatedShape = shapeByInteraction(shapes, pressed, TodoDefaults.shapesDefaultAnimationSpec) Column( modifier = modifier .width(90.dp) - .clip(MaterialTheme.shapes.large) + .clip(animatedShape) .clickable( + interactionSource = interactionSource, role = Role.Button, onClick = { VibrationUtils.performHapticFeedback(view) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt index ac4997e..26e9217 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt @@ -3,6 +3,7 @@ package cn.super12138.todo.ui.pages.settings.components.appearance.palette import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.lazy.items +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue @@ -17,6 +18,7 @@ import cn.super12138.todo.logic.model.PaletteStyle import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.ui.pages.settings.components.LazyRowSettingsItem +@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun PalettePicker( modifier: Modifier = Modifier,