From 92614c2ca699eec2001bb99d388125e4a49b61e7 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Tue, 9 Jun 2026 13:26:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20View=E4=B8=8ECompose=E4=BA=AE=E6=9A=97?= =?UTF-8?q?=E8=89=B2=E4=B8=BB=E9=A2=98=E5=86=B7=E5=90=AF=E5=8A=A8=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/App.kt | 6 +++--- app/src/main/java/io/legado/app/base/BaseActivity.kt | 7 +------ .../main/java/io/legado/app/ui/about/MiuixAboutScreen.kt | 4 ++-- .../io/legado/app/ui/config/themeConfig/ThemeConfig.kt | 2 +- .../java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt | 4 ++-- .../java/io/legado/app/ui/widget/components/AppScaffold.kt | 3 +-- .../app/ui/widget/components/effect/BgEffectBackground.kt | 4 ++-- .../app/ui/widget/components/image/cover/CoilBookCover.kt | 5 ++--- 8 files changed, 14 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index b64119d81..6e6ad5ea2 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -34,6 +34,7 @@ import io.legado.app.data.entities.rule.BookInfoRule import io.legado.app.data.entities.rule.ContentRule import io.legado.app.data.entities.rule.ExploreRule import io.legado.app.data.entities.rule.SearchRule +import io.legado.app.data.repository.SettingsRepository import io.legado.app.di.appDatabaseModule import io.legado.app.di.appModule import io.legado.app.help.AppFreezeMonitor @@ -44,11 +45,10 @@ import io.legado.app.help.DispatchersMonitor import io.legado.app.help.LifecycleHelp import io.legado.app.help.RuleBigDataHelp import io.legado.app.help.book.BookHelp -import io.legado.app.data.repository.SettingsRepository import io.legado.app.help.config.AppConfig +import io.legado.app.help.config.ReadBookConfig import io.legado.app.help.config.ThemeConfigStore import io.legado.app.help.config.ThemeConfigStore.applyDayNightInit -import io.legado.app.help.config.ReadBookConfig import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.http.Cronet import io.legado.app.help.http.ObsoleteUrlFactory @@ -91,6 +91,7 @@ class App : Application(), ImageLoaderFactory { androidContext(this@App) modules(appDatabaseModule, appModule) } + applyDayNightInit(this) if (getPrefString("app_theme", "0") == "12") { if (AppConfig.customMode == "accent") setTheme(R.style.ThemeOverlay_WhiteBackground) @@ -130,7 +131,6 @@ class App : Application(), ImageLoaderFactory { ThreadUtils.setThreadAssertsDisabledForTesting(true) } oldConfig = Configuration(resources.configuration) - applyDayNightInit(this) registerActivityLifecycleCallbacks(LifecycleHelp) defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig) Coroutine.async { diff --git a/app/src/main/java/io/legado/app/base/BaseActivity.kt b/app/src/main/java/io/legado/app/base/BaseActivity.kt index c71b07b88..548b5c4df 100644 --- a/app/src/main/java/io/legado/app/base/BaseActivity.kt +++ b/app/src/main/java/io/legado/app/base/BaseActivity.kt @@ -128,12 +128,7 @@ abstract class BaseActivity( true, fullScreen ) - val isDarkTheme = when (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) { - Configuration.UI_MODE_NIGHT_YES -> true - Configuration.UI_MODE_NIGHT_NO, - Configuration.UI_MODE_NIGHT_UNDEFINED -> false - else -> false - } + val isDarkTheme = AppConfig.isNightTheme WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = !isDarkTheme } diff --git a/app/src/main/java/io/legado/app/ui/about/MiuixAboutScreen.kt b/app/src/main/java/io/legado/app/ui/about/MiuixAboutScreen.kt index 12520b589..53141d010 100644 --- a/app/src/main/java/io/legado/app/ui/about/MiuixAboutScreen.kt +++ b/app/src/main/java/io/legado/app/ui/about/MiuixAboutScreen.kt @@ -4,7 +4,6 @@ package io.legado.app.ui.about import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -46,6 +45,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.legado.app.R import io.legado.app.constant.AppConst.appInfo +import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.util.BlurredBar import io.legado.app.ui.util.LocalAppState import io.legado.app.ui.util.LocalIsWideScreen @@ -212,7 +212,7 @@ private fun AboutContent( .calculateRightPadding(LayoutDirection.Ltr) + 16.dp, ) - val isInDark = isSystemInDarkTheme() + val isInDark = LegadoTheme.isDark val dynamicBackground = isRuntimeShaderSupported() val cardBlend = diff --git a/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt b/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt index 4d47907d7..11225e44f 100644 --- a/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt +++ b/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt @@ -59,7 +59,7 @@ object ThemeConfig { } fun initNightMode() { - when (appCtx.getPrefString(PreferKey.themeMode, "0")) { + when (themeMode) { "1" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) "2" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) else -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) diff --git a/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt b/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt index 3aca4ad5d..259b1322c 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt @@ -11,7 +11,6 @@ import androidx.activity.compose.BackHandler import androidx.activity.compose.LocalActivity import androidx.appcompat.app.AppCompatActivity import androidx.compose.foundation.background -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -55,6 +54,7 @@ import io.legado.app.help.config.AppConfig import io.legado.app.help.http.CookieManager import io.legado.app.ui.config.otherConfig.OtherConfig import io.legado.app.ui.login.SourceLoginActivity +import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.widget.components.AppScaffold import io.legado.app.ui.widget.components.AppTextField import io.legado.app.ui.widget.components.button.ConfirmDismissButtonsRow @@ -189,7 +189,7 @@ fun RssReadRouteScreen( } } - val isNight = isSystemInDarkTheme() + val isNight = LegadoTheme.isDark LaunchedEffect(isNight, webView) { val currentWebView = webView ?: return@LaunchedEffect diff --git a/app/src/main/java/io/legado/app/ui/widget/components/AppScaffold.kt b/app/src/main/java/io/legado/app/ui/widget/components/AppScaffold.kt index 506270474..de5ff37ef 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/AppScaffold.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/AppScaffold.kt @@ -1,6 +1,5 @@ package io.legado.app.ui.widget.components -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets @@ -46,7 +45,7 @@ fun AppScaffold( disableHazeSource: Boolean = false, content: @Composable (PaddingValues) -> Unit ) { - val isDark = isSystemInDarkTheme() + val isDark = LegadoTheme.isDark val hasImageBg = ThemeConfig.hasImageBg(isDark) val hazeState = remember { HazeState() } val composeEngine = LegadoTheme.composeEngine diff --git a/app/src/main/java/io/legado/app/ui/widget/components/effect/BgEffectBackground.kt b/app/src/main/java/io/legado/app/ui/widget/components/effect/BgEffectBackground.kt index 5fb925445..9d8b7e9c2 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/effect/BgEffectBackground.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/effect/BgEffectBackground.kt @@ -2,7 +2,6 @@ package io.legado.app.ui.widget.components.effect import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.spring -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Spacer @@ -11,6 +10,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.util.shouldShowSplitPane import kotlinx.coroutines.delay import kotlinx.coroutines.isActive @@ -39,7 +39,7 @@ fun BgEffectBackground( ) { val surface = MiuixTheme.colorScheme.surface val deviceType = if (shouldShowSplitPane()) DeviceType.PAD else DeviceType.PHONE - val isDarkTheme = isSystemInDarkTheme() + val isDarkTheme = LegadoTheme.isDark val painter = remember(isOs3Effect) { BgEffectPainter(isOs3Effect) } val preset = remember(deviceType, isDarkTheme, isOs3Effect) { diff --git a/app/src/main/java/io/legado/app/ui/widget/components/image/cover/CoilBookCover.kt b/app/src/main/java/io/legado/app/ui/widget/components/image/cover/CoilBookCover.kt index 01644ddd0..c511e5f9a 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/image/cover/CoilBookCover.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/image/cover/CoilBookCover.kt @@ -13,7 +13,6 @@ import androidx.compose.animation.SharedTransitionScope import androidx.compose.animation.core.animateFloat import androidx.compose.foundation.Canvas import androidx.compose.foundation.background -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize @@ -68,7 +67,7 @@ fun BookCoverImage( sharedCoverKey: String? = null, ) { val context = LocalContext.current - val isNight = isSystemInDarkTheme() + val isNight = LegadoTheme.isDark val useDefault = !ignoreUseDefaultCover && CoverConfig.useDefaultCover val finalPath = if (useDefault) null else path @@ -159,7 +158,7 @@ fun CoilBookCover( animatedVisibilityScope: AnimatedVisibilityScope? = null, sharedCoverKey: String? = null, ) { - val isNight = isSystemInDarkTheme() + val isNight = LegadoTheme.isDark val useDefault = !ignoreUseDefaultCover && CoverConfig.useDefaultCover val finalPath = if (useDefault) null else path