fix: View与Compose亮暗色主题冷启动不一致
This commit is contained in:
@@ -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.ContentRule
|
||||||
import io.legado.app.data.entities.rule.ExploreRule
|
import io.legado.app.data.entities.rule.ExploreRule
|
||||||
import io.legado.app.data.entities.rule.SearchRule
|
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.appDatabaseModule
|
||||||
import io.legado.app.di.appModule
|
import io.legado.app.di.appModule
|
||||||
import io.legado.app.help.AppFreezeMonitor
|
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.LifecycleHelp
|
||||||
import io.legado.app.help.RuleBigDataHelp
|
import io.legado.app.help.RuleBigDataHelp
|
||||||
import io.legado.app.help.book.BookHelp
|
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.AppConfig
|
||||||
|
import io.legado.app.help.config.ReadBookConfig
|
||||||
import io.legado.app.help.config.ThemeConfigStore
|
import io.legado.app.help.config.ThemeConfigStore
|
||||||
import io.legado.app.help.config.ThemeConfigStore.applyDayNightInit
|
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.coroutine.Coroutine
|
||||||
import io.legado.app.help.http.Cronet
|
import io.legado.app.help.http.Cronet
|
||||||
import io.legado.app.help.http.ObsoleteUrlFactory
|
import io.legado.app.help.http.ObsoleteUrlFactory
|
||||||
@@ -91,6 +91,7 @@ class App : Application(), ImageLoaderFactory {
|
|||||||
androidContext(this@App)
|
androidContext(this@App)
|
||||||
modules(appDatabaseModule, appModule)
|
modules(appDatabaseModule, appModule)
|
||||||
}
|
}
|
||||||
|
applyDayNightInit(this)
|
||||||
if (getPrefString("app_theme", "0") == "12") {
|
if (getPrefString("app_theme", "0") == "12") {
|
||||||
if (AppConfig.customMode == "accent")
|
if (AppConfig.customMode == "accent")
|
||||||
setTheme(R.style.ThemeOverlay_WhiteBackground)
|
setTheme(R.style.ThemeOverlay_WhiteBackground)
|
||||||
@@ -130,7 +131,6 @@ class App : Application(), ImageLoaderFactory {
|
|||||||
ThreadUtils.setThreadAssertsDisabledForTesting(true)
|
ThreadUtils.setThreadAssertsDisabledForTesting(true)
|
||||||
}
|
}
|
||||||
oldConfig = Configuration(resources.configuration)
|
oldConfig = Configuration(resources.configuration)
|
||||||
applyDayNightInit(this)
|
|
||||||
registerActivityLifecycleCallbacks(LifecycleHelp)
|
registerActivityLifecycleCallbacks(LifecycleHelp)
|
||||||
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
|
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
|
||||||
Coroutine.async {
|
Coroutine.async {
|
||||||
|
|||||||
@@ -128,12 +128,7 @@ abstract class BaseActivity<VB : ViewBinding>(
|
|||||||
true,
|
true,
|
||||||
fullScreen
|
fullScreen
|
||||||
)
|
)
|
||||||
val isDarkTheme = when (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
|
val isDarkTheme = AppConfig.isNightTheme
|
||||||
Configuration.UI_MODE_NIGHT_YES -> true
|
|
||||||
Configuration.UI_MODE_NIGHT_NO,
|
|
||||||
Configuration.UI_MODE_NIGHT_UNDEFINED -> false
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = !isDarkTheme
|
WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = !isDarkTheme
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ package io.legado.app.ui.about
|
|||||||
|
|
||||||
import androidx.compose.foundation.Image
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
@@ -46,6 +45,7 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.constant.AppConst.appInfo
|
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.BlurredBar
|
||||||
import io.legado.app.ui.util.LocalAppState
|
import io.legado.app.ui.util.LocalAppState
|
||||||
import io.legado.app.ui.util.LocalIsWideScreen
|
import io.legado.app.ui.util.LocalIsWideScreen
|
||||||
@@ -212,7 +212,7 @@ private fun AboutContent(
|
|||||||
.calculateRightPadding(LayoutDirection.Ltr) + 16.dp,
|
.calculateRightPadding(LayoutDirection.Ltr) + 16.dp,
|
||||||
)
|
)
|
||||||
|
|
||||||
val isInDark = isSystemInDarkTheme()
|
val isInDark = LegadoTheme.isDark
|
||||||
val dynamicBackground = isRuntimeShaderSupported()
|
val dynamicBackground = isRuntimeShaderSupported()
|
||||||
|
|
||||||
val cardBlend =
|
val cardBlend =
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ object ThemeConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun initNightMode() {
|
fun initNightMode() {
|
||||||
when (appCtx.getPrefString(PreferKey.themeMode, "0")) {
|
when (themeMode) {
|
||||||
"1" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
"1" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
||||||
"2" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
"2" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
||||||
else -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
else -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import androidx.activity.compose.BackHandler
|
|||||||
import androidx.activity.compose.LocalActivity
|
import androidx.activity.compose.LocalActivity
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Spacer
|
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.help.http.CookieManager
|
||||||
import io.legado.app.ui.config.otherConfig.OtherConfig
|
import io.legado.app.ui.config.otherConfig.OtherConfig
|
||||||
import io.legado.app.ui.login.SourceLoginActivity
|
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.AppScaffold
|
||||||
import io.legado.app.ui.widget.components.AppTextField
|
import io.legado.app.ui.widget.components.AppTextField
|
||||||
import io.legado.app.ui.widget.components.button.ConfirmDismissButtonsRow
|
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) {
|
LaunchedEffect(isNight, webView) {
|
||||||
val currentWebView = webView ?: return@LaunchedEffect
|
val currentWebView = webView ?: return@LaunchedEffect
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package io.legado.app.ui.widget.components
|
package io.legado.app.ui.widget.components
|
||||||
|
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
@@ -46,7 +45,7 @@ fun AppScaffold(
|
|||||||
disableHazeSource: Boolean = false,
|
disableHazeSource: Boolean = false,
|
||||||
content: @Composable (PaddingValues) -> Unit
|
content: @Composable (PaddingValues) -> Unit
|
||||||
) {
|
) {
|
||||||
val isDark = isSystemInDarkTheme()
|
val isDark = LegadoTheme.isDark
|
||||||
val hasImageBg = ThemeConfig.hasImageBg(isDark)
|
val hasImageBg = ThemeConfig.hasImageBg(isDark)
|
||||||
val hazeState = remember { HazeState() }
|
val hazeState = remember { HazeState() }
|
||||||
val composeEngine = LegadoTheme.composeEngine
|
val composeEngine = LegadoTheme.composeEngine
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package io.legado.app.ui.widget.components.effect
|
|||||||
|
|
||||||
import androidx.compose.animation.core.Animatable
|
import androidx.compose.animation.core.Animatable
|
||||||
import androidx.compose.animation.core.spring
|
import androidx.compose.animation.core.spring
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.BoxScope
|
import androidx.compose.foundation.layout.BoxScope
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
@@ -11,6 +10,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import io.legado.app.ui.theme.LegadoTheme
|
||||||
import io.legado.app.ui.util.shouldShowSplitPane
|
import io.legado.app.ui.util.shouldShowSplitPane
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
@@ -39,7 +39,7 @@ fun BgEffectBackground(
|
|||||||
) {
|
) {
|
||||||
val surface = MiuixTheme.colorScheme.surface
|
val surface = MiuixTheme.colorScheme.surface
|
||||||
val deviceType = if (shouldShowSplitPane()) DeviceType.PAD else DeviceType.PHONE
|
val deviceType = if (shouldShowSplitPane()) DeviceType.PAD else DeviceType.PHONE
|
||||||
val isDarkTheme = isSystemInDarkTheme()
|
val isDarkTheme = LegadoTheme.isDark
|
||||||
val painter = remember(isOs3Effect) { BgEffectPainter(isOs3Effect) }
|
val painter = remember(isOs3Effect) { BgEffectPainter(isOs3Effect) }
|
||||||
|
|
||||||
val preset = remember(deviceType, isDarkTheme, isOs3Effect) {
|
val preset = remember(deviceType, isDarkTheme, isOs3Effect) {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import androidx.compose.animation.SharedTransitionScope
|
|||||||
import androidx.compose.animation.core.animateFloat
|
import androidx.compose.animation.core.animateFloat
|
||||||
import androidx.compose.foundation.Canvas
|
import androidx.compose.foundation.Canvas
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.aspectRatio
|
import androidx.compose.foundation.layout.aspectRatio
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
@@ -68,7 +67,7 @@ fun BookCoverImage(
|
|||||||
sharedCoverKey: String? = null,
|
sharedCoverKey: String? = null,
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val isNight = isSystemInDarkTheme()
|
val isNight = LegadoTheme.isDark
|
||||||
|
|
||||||
val useDefault = !ignoreUseDefaultCover && CoverConfig.useDefaultCover
|
val useDefault = !ignoreUseDefaultCover && CoverConfig.useDefaultCover
|
||||||
val finalPath = if (useDefault) null else path
|
val finalPath = if (useDefault) null else path
|
||||||
@@ -159,7 +158,7 @@ fun CoilBookCover(
|
|||||||
animatedVisibilityScope: AnimatedVisibilityScope? = null,
|
animatedVisibilityScope: AnimatedVisibilityScope? = null,
|
||||||
sharedCoverKey: String? = null,
|
sharedCoverKey: String? = null,
|
||||||
) {
|
) {
|
||||||
val isNight = isSystemInDarkTheme()
|
val isNight = LegadoTheme.isDark
|
||||||
|
|
||||||
val useDefault = !ignoreUseDefaultCover && CoverConfig.useDefaultCover
|
val useDefault = !ignoreUseDefaultCover && CoverConfig.useDefaultCover
|
||||||
val finalPath = if (useDefault) null else path
|
val finalPath = if (useDefault) null else path
|
||||||
|
|||||||
Reference in New Issue
Block a user