fix:修复菜单打开及切换配置时状态栏颜色未同步更新的问题 (#1310)
* fix:修复菜单打开及切换配置时状态栏颜色未同步更新的问题 * fix:ReadStyleContent底部tab不跟手,settledPage改成currentPage
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user