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" />
+
+