From 14d6c350671a39113043299e2dee09fce3d0f155 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sun, 1 Jun 2025 18:16:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/constant/PreferKey.kt | 1 + .../io/legado/app/help/config/AppConfig.kt | 3 ++ .../app/service/BaseReadAloudService.kt | 20 ++++++++--- .../ui/book/read/config/MoreConfigDialog.kt | 4 +++ .../legado/app/ui/book/read/page/PageView.kt | 36 +++++++++++++++++-- app/src/main/res/layout/view_book_page.xml | 7 +--- app/src/main/res/values-es-rES/strings.xml | 1 + app/src/main/res/values-ja-rJP/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-vi/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values-zh/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/pref_config_read.xml | 11 ++++-- 15 files changed, 74 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 7ce58e32c..4d68b998b 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -162,6 +162,7 @@ object PreferKey { const val readAloudByMediaButton = "readAloudByMediaButton" const val showMangaUi = "showMangaUi" const val disableMangaScale = "disableMangaScale" + const val paddingDisplayCutouts = "paddingDisplayCutouts" const val cPrimary = "colorPrimary" const val cAccent = "colorAccent" diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index 35267b8c5..ed4924b9f 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -513,6 +513,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { val mouseWheelPage get() = appCtx.getPrefBoolean(PreferKey.mouseWheelPage, true) + val paddingDisplayCutouts + get() = appCtx.getPrefBoolean(PreferKey.paddingDisplayCutouts, false) + var searchScope: String get() = appCtx.getPrefString("searchScope") ?: "" set(value) { diff --git a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt index 6b8b681fd..02993aacf 100644 --- a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt @@ -47,8 +47,8 @@ import io.legado.app.utils.LogUtils import io.legado.app.utils.activityPendingIntent import io.legado.app.utils.broadcastPendingIntent import io.legado.app.utils.getPrefBoolean -import io.legado.app.utils.isVivoDevice import io.legado.app.utils.isSamsungDevice +import io.legado.app.utils.isVivoDevice import io.legado.app.utils.observeEvent import io.legado.app.utils.observeSharedPreferences import io.legado.app.utils.postEvent @@ -467,37 +467,47 @@ abstract class BaseReadAloudService : BaseService(), override fun onPlay() { resumeReadAloud() } + override fun onPause() { pauseReadAloud() } + override fun onSkipToNext() { if (getPrefBoolean("mediaButtonPerNext", false)) { nextChapter() - } else{ + } else { nextP() } } + override fun onSkipToPrevious() { if (getPrefBoolean("mediaButtonPerNext", false)) { prevChapter() - } else{ + } else { prevP() } } + override fun onStop() { stopSelf() } + override fun onCustomAction(action: String, extras: Bundle?) { if (action == "ACTION_ADD_TIMER") addTimer() } + override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean { - return MediaButtonReceiver.handleIntent(this@BaseReadAloudService, mediaButtonEvent) + return MediaButtonReceiver.handleIntent( + this@BaseReadAloudService, mediaButtonEvent + ) } }) } else { mediaSessionCompat.setCallback(object : MediaSessionCompat.Callback() { override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean { - return MediaButtonReceiver.handleIntent(this@BaseReadAloudService, mediaButtonEvent) + return MediaButtonReceiver.handleIntent( + this@BaseReadAloudService, mediaButtonEvent + ) } }) } diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt index 61f63b7c5..e1529a17a 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt @@ -169,6 +169,10 @@ class MoreConfigDialog : BasePrefDialogFragment() { ReadBook.callBack?.upPageAnim(true) ReadBook.loadContent(false) } + + PreferKey.paddingDisplayCutouts -> { + postEvent(EventBus.UP_CONFIG, arrayListOf(2)) + } } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt index 571126830..f95f80190 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt @@ -2,15 +2,20 @@ package io.legado.app.ui.book.read.page import android.annotation.SuppressLint import android.content.Context +import android.graphics.drawable.LayerDrawable import android.view.LayoutInflater import android.widget.FrameLayout 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.isInvisible import io.legado.app.R import io.legado.app.constant.AppConst.timeFormat import io.legado.app.data.entities.Bookmark 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.ReadTipConfig 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.dpToPx import io.legado.app.utils.gone +import io.legado.app.utils.setOnApplyWindowInsetsListenerCompat import io.legado.app.utils.setTextIfNotEqual import splitties.views.backgroundColor import java.util.Date @@ -95,6 +101,7 @@ class PageView(context: Context) : FrameLayout(context) { vwBottomDivider.backgroundColor = tipDividerColor upStatusBar() upNavigationBar() + upPaddingDisplayCutouts() llHeader.setPadding( it.headerPaddingLeft.dpToPx(), it.headerPaddingTop.dpToPx(), @@ -126,6 +133,24 @@ class PageView(context: Context) : FrameLayout(context) { 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() { - binding.vwRoot.backgroundColor = ReadBookConfig.bgMeanColor - binding.vwBg.background = ReadBookConfig.bg + binding.vwRoot.background = LayerDrawable( + arrayOf( + ReadBookConfig.bgMeanColor.toDrawable(), + ReadBookConfig.bg + ) + ) upBgAlpha() } @@ -249,7 +278,8 @@ class PageView(context: Context) : FrameLayout(context) { * 更新背景透明度 */ fun upBgAlpha() { - binding.vwBg.alpha = ReadBookConfig.bgAlpha / 100f + ReadBookConfig.bg?.alpha = (ReadBookConfig.bgAlpha / 100f * 255).toInt() + binding.vwRoot.invalidate() } /** diff --git a/app/src/main/res/layout/view_book_page.xml b/app/src/main/res/layout/view_book_page.xml index 656b4e8d4..eb91b69db 100644 --- a/app/src/main/res/layout/view_book_page.xml +++ b/app/src/main/res/layout/view_book_page.xml @@ -8,11 +8,6 @@ android:background="@color/background" android:orientation="vertical"> - - - \ No newline at end of file + diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index d8557456b..1a590cb5a 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1215,4 +1215,5 @@ 滤镜 隐藏漫画列表标题 刷新发现 + Padding display cutouts diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index f0e1677de..1febb2666 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1218,4 +1218,5 @@ 滤镜 隐藏漫画列表标题 刷新发现 + Padding display cutouts diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index a69399a9f..37b348097 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1218,4 +1218,5 @@ 滤镜 隐藏漫画列表标题 刷新发现 + Padding display cutouts diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index e0e0d9269..95d6e33c5 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1214,4 +1214,5 @@ Còn 滤镜 隐藏漫画列表标题 刷新发现 + Padding display cutouts diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ecec94f69..8f51d2ae3 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1210,4 +1210,5 @@ 滤镜 隐藏漫画列表标题 刷新发现 + 填充刘海区域 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 261653317..106def4c1 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1212,4 +1212,5 @@ 滤镜 隐藏漫画列表标题 刷新发现 + 填充刘海区域 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 749e7aa9c..d4cc3da14 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1217,4 +1217,5 @@ 滤镜 隐藏漫画列表标题 刷新发现 + 填充刘海区域 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ee31367f6..d0ec2603d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1218,4 +1218,5 @@ 滤镜 隐藏漫画列表标题 刷新发现 + Padding display cutouts diff --git a/app/src/main/res/xml/pref_config_read.xml b/app/src/main/res/xml/pref_config_read.xml index 06d5af517..89f5d50f4 100644 --- a/app/src/main/res/xml/pref_config_read.xml +++ b/app/src/main/res/xml/pref_config_read.xml @@ -27,6 +27,13 @@ app:iconSpaceReserved="false" app:isBottomBackground="true" /> + +