[新增] 新增漫画音量键翻页反转设置

This commit is contained in:
HapeLee
2026-01-10 04:05:27 +08:00
parent e31a6deed3
commit 4ff5ab461e
7 changed files with 47 additions and 15 deletions
@@ -191,7 +191,7 @@ object PreferKey {
const val mangaScrollMode = "mangaScrollMode"
const val webtoonSidePaddingDp = "webtoonSidePaddingDp"
const val mangaVolumeKeyPage = "mangaVolumeKeyPage"
const val reverseVolumeKeyPage = "reverseVolumeKeyPage"
const val mangaClickActionTL = "mangaClickActionTopLeft"
const val mangaClickActionTC = "mangaClickActionTopCenter"
const val mangaClickActionTR = "mangaClickActionTopRight"
@@ -869,6 +869,12 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
appCtx.putPrefBoolean(PreferKey.mangaVolumeKeyPage, value)
}
var reverseVolumeKeyPage: Boolean
get() = appCtx.getPrefBoolean(PreferKey.reverseVolumeKeyPage, false)
set(value) {
appCtx.putPrefBoolean(PreferKey.reverseVolumeKeyPage, value)
}
var tabletInterface
get() = appCtx.getPrefString(PreferKey.tabletInterface, "auto")
set(value) {
@@ -11,7 +11,6 @@ import android.view.MenuItem
import android.view.WindowManager
import android.view.animation.LinearInterpolator
import androidx.activity.addCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog
import androidx.core.view.doOnLayout
@@ -31,7 +30,6 @@ import io.legado.app.BuildConfig
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.AppLog
import io.legado.app.constant.BookType
import io.legado.app.constant.EventBus
import io.legado.app.data.appDb
import io.legado.app.data.entities.Book
@@ -45,7 +43,6 @@ import io.legado.app.help.AppFreezeMonitor.handler
import io.legado.app.help.book.BookHelp
import io.legado.app.help.book.isImage
import io.legado.app.help.book.isLocal
import io.legado.app.help.book.removeType
import io.legado.app.help.config.AppConfig
import io.legado.app.help.coroutine.Coroutine
import io.legado.app.help.source.getSourceType
@@ -815,6 +812,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
AppConfig.MangaVolumeKeyPage = enable
}
override fun onReverseVolumeKeyPageChanged(enable: Boolean) {
AppConfig.reverseVolumeKeyPage = enable
}
override fun onHideMangaTitleChanged(hide: Boolean) {
AppConfig.hideMangaTitle = hide
ReadManga.loadContent()
@@ -1069,17 +1070,29 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (AppConfig.MangaVolumeKeyPage) {
when (keyCode) {
KeyEvent.KEYCODE_VOLUME_UP -> {
scrollToPrev()
return true
}
if (!AppConfig.MangaVolumeKeyPage) {
return super.onKeyDown(keyCode, event)
}
KeyEvent.KEYCODE_VOLUME_DOWN -> {
val isReverse = AppConfig.reverseVolumeKeyPage
when (keyCode) {
KeyEvent.KEYCODE_VOLUME_UP -> {
if (isReverse) {
scrollToNext()
return true
} else {
scrollToPrev()
}
return true
}
KeyEvent.KEYCODE_VOLUME_DOWN -> {
if (isReverse) {
scrollToPrev()
} else {
scrollToNext()
}
return true
}
}
@@ -4,7 +4,6 @@ import android.content.DialogInterface
import android.os.Bundle
import android.view.Gravity
import android.view.View
import androidx.core.graphics.toColorInt
import androidx.core.view.isVisible
import androidx.transition.TransitionManager
import com.google.android.material.chip.Chip
@@ -14,9 +13,7 @@ import io.legado.app.base.BaseBottomSheetDialogFragment
import io.legado.app.constant.EventBus
import io.legado.app.databinding.DialogMangaFooterSettingBinding
import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.ReadBookConfig
import io.legado.app.ui.book.manga.entities.MangaFooterConfig
import io.legado.app.ui.book.read.config.TipConfigDialog.Companion.B_COLOR
import io.legado.app.ui.widget.ReaderInfoBarView
import io.legado.app.utils.GSON
import io.legado.app.utils.fromJsonObject
@@ -134,6 +131,13 @@ class MangaFooterSettingDialog :
}
}
binding.reverseVolumeKeyPage.apply {
isChecked = AppConfig.reverseVolumeKeyPage
setOnCheckedChangeListener { _, isChecked ->
callback?.onReverseVolumeKeyPageChanged(isChecked)
}
}
binding.checkboxMangaLongClick.apply {
isChecked = AppConfig.mangaLongClick
setOnCheckedChangeListener { _, isChecked ->
@@ -303,6 +307,7 @@ class MangaFooterSettingDialog :
fun onMangaScaleDisabledChanged(disabled: Boolean)
fun onHideMangaTitleChanged(hide: Boolean)
fun onVolumeKeyPageChanged(enable: Boolean)
fun onReverseVolumeKeyPageChanged(enable: Boolean)
fun onMangaLongClickChanged(checked: Boolean)
}