fix:修复菜单打开及切换配置时状态栏颜色未同步更新的问题 (#1310)

* fix:修复菜单打开及切换配置时状态栏颜色未同步更新的问题

* fix:ReadStyleContent底部tab不跟手,settledPage改成currentPage
This commit is contained in:
fansan
2026-06-08 00:20:32 +08:00
committed by GitHub
parent e055bc2484
commit 5897304274
5 changed files with 35 additions and 8 deletions
@@ -1,6 +1,7 @@
package io.legado.app.help.config
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
@@ -340,7 +341,29 @@ object ReadBookConfig {
}
val resolvedMenuBgColor: Int
get() = if (ReadStyleResolver.isNightTheme()) readMenuBgColorNight else readMenuBgColor
get() {
val isNight = ReadStyleResolver.isNightTheme()
return when (AppConfig.readBarStyle) {
1 -> { // 跟随阅读背景
val background = ReadStyleResolver.currentBackground(durConfig)
if (background.type == 0) {
try {
background.value.toColorInt()
} catch (_: Exception) {
if (isNight) Color.BLACK else Color.WHITE
}
} else {
bgMeanColor.takeIf { it != 0 } ?: (if (isNight) Color.BLACK else Color.WHITE)
}
}
2 -> { // 自定义
if (isNight) readMenuBgColorNight else readMenuBgColor
}
else -> {
if (isNight) Color.BLACK else Color.WHITE
}
}
}
val resolvedMenuAccentColor: Int
get() = if (ReadStyleResolver.isNightTheme()) readMenuAccentColorNight else readMenuAccentColor
@@ -737,7 +737,7 @@ sealed interface ConfigUpdate {
// --- Layout / style ---
data class StyleSelect(val index: Int) : ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent, ConfigUpdateAction.UpdateSystemUi)
}
data class ShareLayout(val value: Boolean) : ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
@@ -748,7 +748,7 @@ sealed interface ConfigUpdate {
// --- Menu colors ---
data class MenuBgColor(val color: Int) : ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent, ConfigUpdateAction.UpdateSystemUi)
}
data class MenuAccentColor(val color: Int) : ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
@@ -757,7 +757,7 @@ sealed interface ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
}
data class MenuBgColorNight(val color: Int) : ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent, ConfigUpdateAction.UpdateSystemUi)
}
data class MenuAccentColorNight(val color: Int) : ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
@@ -766,10 +766,10 @@ sealed interface ConfigUpdate {
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
}
data class MenuColorMode(val value: Int) : ConfigUpdate {
override val actions = emptySet<ConfigUpdateAction>()
override val actions = setOf(ConfigUpdateAction.UpdateSystemUi)
}
data class ReadBarStyle(val value: Int) : ConfigUpdate {
override val actions = emptySet<ConfigUpdateAction>()
override val actions = setOf(ConfigUpdateAction.UpdateSystemUi)
}
// --- Menu bar border ---
@@ -45,6 +45,7 @@ import io.legado.app.ui.book.read.page.provider.TextPageFactory
import io.legado.app.ui.book.searchContent.SearchResult
import io.legado.app.ui.login.SourceLoginJsExtensions
import io.legado.app.ui.widget.PopupAction
import io.legado.app.utils.ColorUtils
import io.legado.app.utils.Debounce
import io.legado.app.utils.GSON
import io.legado.app.utils.buildMainHandler
@@ -231,6 +232,8 @@ class ReadBookController(
if (toolBarHide) {
activity.setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark())
} else {
activity.setLightStatusBar(ColorUtils.isColorLight(ReadBookConfig.resolvedMenuBgColor))
}
}
@@ -2565,7 +2565,8 @@ class ReadBookViewModel(
setOf(
ConfigUpdateAction.UpdateBackground,
ConfigUpdateAction.UpdateStyle,
ConfigUpdateAction.UpdateContent
ConfigUpdateAction.UpdateContent,
ConfigUpdateAction.UpdateSystemUi
)
))
postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
@@ -97,7 +97,7 @@ fun ReadStyleContent(
var currentPage by remember { mutableIntStateOf(0) }
LaunchedEffect(pagerState) {
snapshotFlow { pagerState.settledPage }.collect { page ->
snapshotFlow { pagerState.currentPage }.collect { page ->
currentPage = page
}
}