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

View File

@@ -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"

View File

@@ -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) {

View File

@@ -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
)
}
})
}

View File

@@ -169,6 +169,10 @@ class MoreConfigDialog : BasePrefDialogFragment() {
ReadBook.callBack?.upPageAnim(true)
ReadBook.loadContent(false)
}
PreferKey.paddingDisplayCutouts -> {
postEvent(EventBus.UP_CONFIG, arrayListOf(2))
}
}
}

View File

@@ -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()
}
/**

View File

@@ -8,11 +8,6 @@
android:background="@color/background"
android:orientation="vertical">
<View
android:id="@+id/vw_bg"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/vw_status_bar"
android:layout_width="match_parent"
@@ -145,4 +140,4 @@
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1215,4 +1215,5 @@
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources>

View File

@@ -1218,4 +1218,5 @@
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources>

View File

@@ -1218,4 +1218,5 @@
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources>

View File

@@ -1214,4 +1214,5 @@ Còn </string>
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources>

View File

@@ -1210,4 +1210,5 @@
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">填充刘海区域</string>
</resources>

View File

@@ -1212,4 +1212,5 @@
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">填充刘海区域</string>
</resources>

View File

@@ -1217,4 +1217,5 @@
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">填充刘海区域</string>
</resources>

View File

@@ -1218,4 +1218,5 @@
<string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string>
<string name="refresh_explore">刷新发现</string>
<string name="padding_display_cutouts">Padding display cutouts</string>
</resources>

View File

@@ -27,6 +27,13 @@
app:iconSpaceReserved="false"
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
android:defaultValue="true"
android:key="readBodyToLh"
@@ -36,8 +43,8 @@
<io.legado.app.lib.prefs.SwitchPreference
android:defaultValue="false"
android:key="hideNavigationBar"
android:title="@string/pt_hide_navigation_bar"
android:key="paddingDisplayCutouts"
android:title="@string/padding_display_cutouts"
app:iconSpaceReserved="false"
app:isBottomBackground="true" />