From f34e34e5ae7936304b31c06ebd4b672177bfb11c Mon Sep 17 00:00:00 2001 From: xfy Date: Mon, 1 Jun 2026 13:25:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=95=E5=85=A5=20YaYaTheme=20?= =?UTF-8?q?=E5=B9=B6=E5=BA=94=E7=94=A8=E5=88=B0=E6=89=80=E6=9C=89=20Activi?= =?UTF-8?q?ty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 Theme.kt 提供 Android 12+ 动态颜色支持, 为全部 5 个 Activity 的 setContent 包裹 YaYaTheme。 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../kotlin/plus/rua/project/AboutActivity.kt | 5 ++- .../plus/rua/project/DateCheckerActivity.kt | 5 ++- .../plus/rua/project/LicensesActivity.kt | 5 ++- .../kotlin/plus/rua/project/MainActivity.kt | 5 ++- .../kotlin/plus/rua/project/ToolsActivity.kt | 5 ++- .../kotlin/plus/rua/project/ui/theme/Theme.kt | 32 +++++++++++++++++++ 6 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 core/src/main/kotlin/plus/rua/project/ui/theme/Theme.kt diff --git a/app/src/main/kotlin/plus/rua/project/AboutActivity.kt b/app/src/main/kotlin/plus/rua/project/AboutActivity.kt index ccb49b2..73e51dc 100644 --- a/app/src/main/kotlin/plus/rua/project/AboutActivity.kt +++ b/app/src/main/kotlin/plus/rua/project/AboutActivity.kt @@ -4,18 +4,21 @@ import android.content.Intent import android.os.Bundle import androidx.activity.compose.setContent import plus.rua.project.ui.AboutScreen +import plus.rua.project.ui.theme.YaYaTheme class AboutActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - AboutScreen( + YaYaTheme { + AboutScreen( onBack = { finishWithSlideBack() }, onNavigateToLicenses = { startActivityWithSlide(Intent(this, LicensesActivity::class.java)) } ) + } } } } diff --git a/app/src/main/kotlin/plus/rua/project/DateCheckerActivity.kt b/app/src/main/kotlin/plus/rua/project/DateCheckerActivity.kt index 4251318..d9ec965 100644 --- a/app/src/main/kotlin/plus/rua/project/DateCheckerActivity.kt +++ b/app/src/main/kotlin/plus/rua/project/DateCheckerActivity.kt @@ -3,15 +3,18 @@ package plus.rua.project import android.os.Bundle import androidx.activity.compose.setContent import plus.rua.project.ui.DateCheckerScreen +import plus.rua.project.ui.theme.YaYaTheme class DateCheckerActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - DateCheckerScreen( + YaYaTheme { + DateCheckerScreen( onBack = { finishWithSlideBack() } ) + } } } } diff --git a/app/src/main/kotlin/plus/rua/project/LicensesActivity.kt b/app/src/main/kotlin/plus/rua/project/LicensesActivity.kt index cafcaf8..9c99f4e 100644 --- a/app/src/main/kotlin/plus/rua/project/LicensesActivity.kt +++ b/app/src/main/kotlin/plus/rua/project/LicensesActivity.kt @@ -3,15 +3,18 @@ package plus.rua.project import android.os.Bundle import androidx.activity.compose.setContent import plus.rua.project.ui.LicensesScreen +import plus.rua.project.ui.theme.YaYaTheme class LicensesActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - LicensesScreen( + YaYaTheme { + LicensesScreen( onBack = { finishWithSlideBack() } ) + } } } } diff --git a/app/src/main/kotlin/plus/rua/project/MainActivity.kt b/app/src/main/kotlin/plus/rua/project/MainActivity.kt index 5851be4..23595a5 100644 --- a/app/src/main/kotlin/plus/rua/project/MainActivity.kt +++ b/app/src/main/kotlin/plus/rua/project/MainActivity.kt @@ -4,13 +4,15 @@ import android.content.Intent import android.os.Bundle import androidx.activity.compose.setContent import plus.rua.project.ui.CalendarMonthView +import plus.rua.project.ui.theme.YaYaTheme class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - CalendarMonthView( + YaYaTheme { + CalendarMonthView( onNavigateToAbout = { startActivityWithSlide(Intent(this, AboutActivity::class.java)) }, @@ -18,6 +20,7 @@ class MainActivity : BaseActivity() { startActivityWithSlide(Intent(this, ToolsActivity::class.java)) } ) + } } } } diff --git a/app/src/main/kotlin/plus/rua/project/ToolsActivity.kt b/app/src/main/kotlin/plus/rua/project/ToolsActivity.kt index 6aac5c5..ad250ed 100644 --- a/app/src/main/kotlin/plus/rua/project/ToolsActivity.kt +++ b/app/src/main/kotlin/plus/rua/project/ToolsActivity.kt @@ -4,18 +4,21 @@ import android.content.Intent import android.os.Bundle import androidx.activity.compose.setContent import plus.rua.project.ui.ToolsScreen +import plus.rua.project.ui.theme.YaYaTheme class ToolsActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - ToolsScreen( + YaYaTheme { + ToolsScreen( onBack = { finishWithSlideBack() }, onNavigateToDateChecker = { startActivityWithSlide(Intent(this, DateCheckerActivity::class.java)) } ) + } } } } diff --git a/core/src/main/kotlin/plus/rua/project/ui/theme/Theme.kt b/core/src/main/kotlin/plus/rua/project/ui/theme/Theme.kt new file mode 100644 index 0000000..dff9cd1 --- /dev/null +++ b/core/src/main/kotlin/plus/rua/project/ui/theme/Theme.kt @@ -0,0 +1,32 @@ +package plus.rua.project.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +/** + * YaYa 应用主题,Android 12+ 使用系统动态颜色,低版本回退到 Material 3 默认方案。 + */ +@Composable +fun YaYaTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + content: @Composable () -> Unit, +) { + val colorScheme = when { + Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + else -> MaterialTheme.colorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + content = content, + ) +}