fix:修复菜单打开及切换配置时状态栏颜色未同步更新的问题 (#1310)
* fix:修复菜单打开及切换配置时状态栏颜色未同步更新的问题 * fix:ReadStyleContent底部tab不跟手,settledPage改成currentPage
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package io.legado.app.help.config
|
package io.legado.app.help.config
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.graphics.Color
|
||||||
import android.graphics.drawable.BitmapDrawable
|
import android.graphics.drawable.BitmapDrawable
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
@@ -340,7 +341,29 @@ object ReadBookConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val resolvedMenuBgColor: Int
|
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
|
val resolvedMenuAccentColor: Int
|
||||||
get() = if (ReadStyleResolver.isNightTheme()) readMenuAccentColorNight else readMenuAccentColor
|
get() = if (ReadStyleResolver.isNightTheme()) readMenuAccentColorNight else readMenuAccentColor
|
||||||
|
|||||||
@@ -737,7 +737,7 @@ sealed interface ConfigUpdate {
|
|||||||
|
|
||||||
// --- Layout / style ---
|
// --- Layout / style ---
|
||||||
data class StyleSelect(val index: Int) : ConfigUpdate {
|
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 {
|
data class ShareLayout(val value: Boolean) : ConfigUpdate {
|
||||||
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
|
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
|
||||||
@@ -748,7 +748,7 @@ sealed interface ConfigUpdate {
|
|||||||
|
|
||||||
// --- Menu colors ---
|
// --- Menu colors ---
|
||||||
data class MenuBgColor(val color: Int) : ConfigUpdate {
|
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 {
|
data class MenuAccentColor(val color: Int) : ConfigUpdate {
|
||||||
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
|
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)
|
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
|
||||||
}
|
}
|
||||||
data class MenuBgColorNight(val color: Int) : ConfigUpdate {
|
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 {
|
data class MenuAccentColorNight(val color: Int) : ConfigUpdate {
|
||||||
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
|
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)
|
override val actions = setOf(ConfigUpdateAction.UpdateBackground, ConfigUpdateAction.UpdateStyle, ConfigUpdateAction.ReloadContent)
|
||||||
}
|
}
|
||||||
data class MenuColorMode(val value: Int) : ConfigUpdate {
|
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 {
|
data class ReadBarStyle(val value: Int) : ConfigUpdate {
|
||||||
override val actions = emptySet<ConfigUpdateAction>()
|
override val actions = setOf(ConfigUpdateAction.UpdateSystemUi)
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Menu bar border ---
|
// --- 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.book.searchContent.SearchResult
|
||||||
import io.legado.app.ui.login.SourceLoginJsExtensions
|
import io.legado.app.ui.login.SourceLoginJsExtensions
|
||||||
import io.legado.app.ui.widget.PopupAction
|
import io.legado.app.ui.widget.PopupAction
|
||||||
|
import io.legado.app.utils.ColorUtils
|
||||||
import io.legado.app.utils.Debounce
|
import io.legado.app.utils.Debounce
|
||||||
import io.legado.app.utils.GSON
|
import io.legado.app.utils.GSON
|
||||||
import io.legado.app.utils.buildMainHandler
|
import io.legado.app.utils.buildMainHandler
|
||||||
@@ -231,6 +232,8 @@ class ReadBookController(
|
|||||||
|
|
||||||
if (toolBarHide) {
|
if (toolBarHide) {
|
||||||
activity.setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark())
|
activity.setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark())
|
||||||
|
} else {
|
||||||
|
activity.setLightStatusBar(ColorUtils.isColorLight(ReadBookConfig.resolvedMenuBgColor))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2565,7 +2565,8 @@ class ReadBookViewModel(
|
|||||||
setOf(
|
setOf(
|
||||||
ConfigUpdateAction.UpdateBackground,
|
ConfigUpdateAction.UpdateBackground,
|
||||||
ConfigUpdateAction.UpdateStyle,
|
ConfigUpdateAction.UpdateStyle,
|
||||||
ConfigUpdateAction.UpdateContent
|
ConfigUpdateAction.UpdateContent,
|
||||||
|
ConfigUpdateAction.UpdateSystemUi
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
|
postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ fun ReadStyleContent(
|
|||||||
var currentPage by remember { mutableIntStateOf(0) }
|
var currentPage by remember { mutableIntStateOf(0) }
|
||||||
|
|
||||||
LaunchedEffect(pagerState) {
|
LaunchedEffect(pagerState) {
|
||||||
snapshotFlow { pagerState.settledPage }.collect { page ->
|
snapshotFlow { pagerState.currentPage }.collect { page ->
|
||||||
currentPage = page
|
currentPage = page
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user