This commit is contained in:
Horis
2025-06-01 18:16:31 +08:00
parent 39785e5eab
commit 14d6c35067
15 changed files with 74 additions and 16 deletions
@@ -162,6 +162,7 @@ object PreferKey {
const val readAloudByMediaButton = "readAloudByMediaButton" const val readAloudByMediaButton = "readAloudByMediaButton"
const val showMangaUi = "showMangaUi" const val showMangaUi = "showMangaUi"
const val disableMangaScale = "disableMangaScale" const val disableMangaScale = "disableMangaScale"
const val paddingDisplayCutouts = "paddingDisplayCutouts"
const val cPrimary = "colorPrimary" const val cPrimary = "colorPrimary"
const val cAccent = "colorAccent" const val cAccent = "colorAccent"
@@ -513,6 +513,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
val mouseWheelPage val mouseWheelPage
get() = appCtx.getPrefBoolean(PreferKey.mouseWheelPage, true) get() = appCtx.getPrefBoolean(PreferKey.mouseWheelPage, true)
val paddingDisplayCutouts
get() = appCtx.getPrefBoolean(PreferKey.paddingDisplayCutouts, false)
var searchScope: String var searchScope: String
get() = appCtx.getPrefString("searchScope") ?: "" get() = appCtx.getPrefString("searchScope") ?: ""
set(value) { set(value) {
@@ -47,8 +47,8 @@ import io.legado.app.utils.LogUtils
import io.legado.app.utils.activityPendingIntent import io.legado.app.utils.activityPendingIntent
import io.legado.app.utils.broadcastPendingIntent import io.legado.app.utils.broadcastPendingIntent
import io.legado.app.utils.getPrefBoolean import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.isVivoDevice
import io.legado.app.utils.isSamsungDevice import io.legado.app.utils.isSamsungDevice
import io.legado.app.utils.isVivoDevice
import io.legado.app.utils.observeEvent import io.legado.app.utils.observeEvent
import io.legado.app.utils.observeSharedPreferences import io.legado.app.utils.observeSharedPreferences
import io.legado.app.utils.postEvent import io.legado.app.utils.postEvent
@@ -467,37 +467,47 @@ abstract class BaseReadAloudService : BaseService(),
override fun onPlay() { override fun onPlay() {
resumeReadAloud() resumeReadAloud()
} }
override fun onPause() { override fun onPause() {
pauseReadAloud() pauseReadAloud()
} }
override fun onSkipToNext() { override fun onSkipToNext() {
if (getPrefBoolean("mediaButtonPerNext", false)) { if (getPrefBoolean("mediaButtonPerNext", false)) {
nextChapter() nextChapter()
} else{ } else {
nextP() nextP()
} }
} }
override fun onSkipToPrevious() { override fun onSkipToPrevious() {
if (getPrefBoolean("mediaButtonPerNext", false)) { if (getPrefBoolean("mediaButtonPerNext", false)) {
prevChapter() prevChapter()
} else{ } else {
prevP() prevP()
} }
} }
override fun onStop() { override fun onStop() {
stopSelf() stopSelf()
} }
override fun onCustomAction(action: String, extras: Bundle?) { override fun onCustomAction(action: String, extras: Bundle?) {
if (action == "ACTION_ADD_TIMER") addTimer() if (action == "ACTION_ADD_TIMER") addTimer()
} }
override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean { override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean {
return MediaButtonReceiver.handleIntent(this@BaseReadAloudService, mediaButtonEvent) return MediaButtonReceiver.handleIntent(
this@BaseReadAloudService, mediaButtonEvent
)
} }
}) })
} else { } else {
mediaSessionCompat.setCallback(object : MediaSessionCompat.Callback() { mediaSessionCompat.setCallback(object : MediaSessionCompat.Callback() {
override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean { override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean {
return MediaButtonReceiver.handleIntent(this@BaseReadAloudService, mediaButtonEvent) return MediaButtonReceiver.handleIntent(
this@BaseReadAloudService, mediaButtonEvent
)
} }
}) })
} }
@@ -169,6 +169,10 @@ class MoreConfigDialog : BasePrefDialogFragment() {
ReadBook.callBack?.upPageAnim(true) ReadBook.callBack?.upPageAnim(true)
ReadBook.loadContent(false) ReadBook.loadContent(false)
} }
PreferKey.paddingDisplayCutouts -> {
postEvent(EventBus.UP_CONFIG, arrayListOf(2))
}
} }
} }
@@ -2,15 +2,20 @@ package io.legado.app.ui.book.read.page
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.drawable.LayerDrawable
import android.view.LayoutInflater import android.view.LayoutInflater
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isGone import androidx.core.view.isGone
import androidx.core.view.isInvisible import androidx.core.view.isInvisible
import io.legado.app.R import io.legado.app.R
import io.legado.app.constant.AppConst.timeFormat import io.legado.app.constant.AppConst.timeFormat
import io.legado.app.data.entities.Bookmark import io.legado.app.data.entities.Bookmark
import io.legado.app.databinding.ViewBookPageBinding import io.legado.app.databinding.ViewBookPageBinding
import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.ReadBookConfig import io.legado.app.help.config.ReadBookConfig
import io.legado.app.help.config.ReadTipConfig import io.legado.app.help.config.ReadTipConfig
import io.legado.app.model.ReadBook import io.legado.app.model.ReadBook
@@ -25,6 +30,7 @@ import io.legado.app.utils.applyNavigationBarPadding
import io.legado.app.utils.applyStatusBarPadding import io.legado.app.utils.applyStatusBarPadding
import io.legado.app.utils.dpToPx import io.legado.app.utils.dpToPx
import io.legado.app.utils.gone import io.legado.app.utils.gone
import io.legado.app.utils.setOnApplyWindowInsetsListenerCompat
import io.legado.app.utils.setTextIfNotEqual import io.legado.app.utils.setTextIfNotEqual
import splitties.views.backgroundColor import splitties.views.backgroundColor
import java.util.Date import java.util.Date
@@ -95,6 +101,7 @@ class PageView(context: Context) : FrameLayout(context) {
vwBottomDivider.backgroundColor = tipDividerColor vwBottomDivider.backgroundColor = tipDividerColor
upStatusBar() upStatusBar()
upNavigationBar() upNavigationBar()
upPaddingDisplayCutouts()
llHeader.setPadding( llHeader.setPadding(
it.headerPaddingLeft.dpToPx(), it.headerPaddingLeft.dpToPx(),
it.headerPaddingTop.dpToPx(), it.headerPaddingTop.dpToPx(),
@@ -126,6 +133,24 @@ class PageView(context: Context) : FrameLayout(context) {
binding.vwNavigationBar.isGone = ReadBookConfig.hideNavigationBar binding.vwNavigationBar.isGone = ReadBookConfig.hideNavigationBar
} }
fun upPaddingDisplayCutouts() {
if (AppConfig.paddingDisplayCutouts) {
binding.vwRoot.setOnApplyWindowInsetsListenerCompat { _, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout())
binding.vwRoot.setPadding(
insets.left,
if (binding.vwStatusBar.isGone) insets.top else 0,
insets.right,
insets.bottom
)
windowInsets
}
} else {
ViewCompat.setOnApplyWindowInsetsListener(binding.vwRoot, null)
binding.vwRoot.setPadding(0, 0, 0, 0)
}
}
/** /**
* 更新阅读信息 * 更新阅读信息
*/ */
@@ -240,8 +265,12 @@ class PageView(context: Context) : FrameLayout(context) {
* 更新背景 * 更新背景
*/ */
fun upBg() { fun upBg() {
binding.vwRoot.backgroundColor = ReadBookConfig.bgMeanColor binding.vwRoot.background = LayerDrawable(
binding.vwBg.background = ReadBookConfig.bg arrayOf(
ReadBookConfig.bgMeanColor.toDrawable(),
ReadBookConfig.bg
)
)
upBgAlpha() upBgAlpha()
} }
@@ -249,7 +278,8 @@ class PageView(context: Context) : FrameLayout(context) {
* 更新背景透明度 * 更新背景透明度
*/ */
fun upBgAlpha() { fun upBgAlpha() {
binding.vwBg.alpha = ReadBookConfig.bgAlpha / 100f ReadBookConfig.bg?.alpha = (ReadBookConfig.bgAlpha / 100f * 255).toInt()
binding.vwRoot.invalidate()
} }
/** /**
@@ -8,11 +8,6 @@
android:background="@color/background" android:background="@color/background"
android:orientation="vertical"> android:orientation="vertical">
<View
android:id="@+id/vw_bg"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout <FrameLayout
android:id="@+id/vw_status_bar" android:id="@+id/vw_status_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -1215,4 +1215,5 @@
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources> </resources>
@@ -1218,4 +1218,5 @@
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources> </resources>
@@ -1218,4 +1218,5 @@
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources> </resources>
+1
View File
@@ -1214,4 +1214,5 @@ Còn </string>
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources> </resources>
@@ -1210,4 +1210,5 @@
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">填充刘海区域</string>
</resources> </resources>
@@ -1212,4 +1212,5 @@
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">填充刘海区域</string>
</resources> </resources>
+1
View File
@@ -1217,4 +1217,5 @@
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">填充刘海区域</string>
</resources> </resources>
+1
View File
@@ -1218,4 +1218,5 @@
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources> </resources>
+9 -2
View File
@@ -27,6 +27,13 @@
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:isBottomBackground="true" /> app:isBottomBackground="true" />
<io.legado.app.lib.prefs.SwitchPreference
android:defaultValue="false"
android:key="hideNavigationBar"
android:title="@string/pt_hide_navigation_bar"
app:iconSpaceReserved="false"
app:isBottomBackground="true" />
<io.legado.app.lib.prefs.SwitchPreference <io.legado.app.lib.prefs.SwitchPreference
android:defaultValue="true" android:defaultValue="true"
android:key="readBodyToLh" android:key="readBodyToLh"
@@ -36,8 +43,8 @@
<io.legado.app.lib.prefs.SwitchPreference <io.legado.app.lib.prefs.SwitchPreference
android:defaultValue="false" android:defaultValue="false"
android:key="hideNavigationBar" android:key="paddingDisplayCutouts"
android:title="@string/pt_hide_navigation_bar" android:title="@string/padding_display_cutouts"
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:isBottomBackground="true" /> app:isBottomBackground="true" />