漫画背景自定义 #270

This commit is contained in:
HapeLee
2025-11-11 22:36:42 +08:00
parent bbf4dd60e0
commit 2c7aa63f58
5 changed files with 51 additions and 5 deletions
@@ -411,7 +411,8 @@ data class Book(
val mangaColorFilter: String? = null,
var mangaScrollMode: Int? = null,
var webtoonSidePaddingDp: Int? = null
var webtoonSidePaddingDp: Int? = null,
var mangaBackground: String? = null
) : Parcelable
@@ -13,6 +13,7 @@ import android.view.animation.LinearInterpolator
import androidx.activity.addCallback
import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog
import androidx.core.graphics.toColorInt
import androidx.core.view.doOnLayout
import androidx.core.view.isGone
import androidx.core.view.isVisible
@@ -25,6 +26,7 @@ import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL
import com.bumptech.glide.util.FixedPreloadSizeProvider
import com.google.android.material.transition.platform.MaterialContainerTransform
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener
import io.legado.app.BuildConfig
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
@@ -52,6 +54,7 @@ import io.legado.app.ui.book.manga.config.MangaClickActionConfigDialog
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
import io.legado.app.ui.book.manga.config.MangaColorFilterDialog
import io.legado.app.ui.book.manga.config.MangaFooterSettingDialog
import io.legado.app.ui.book.manga.config.MangaFooterSettingDialog.Companion.MANGA_B
import io.legado.app.ui.book.manga.config.MangaScrollMode
import io.legado.app.ui.book.manga.entities.BaseMangaPage
import io.legado.app.ui.book.manga.entities.MangaFooterConfig
@@ -88,7 +91,7 @@ import kotlin.math.ceil
class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewModel>(),
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack,
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback, MangaFooterSettingDialog.Callback,
MangaAutoReadDialog.Callback {
MangaAutoReadDialog.Callback, ColorPickerDialogListener {
private val mLayoutManager by lazy {
MangaLayoutManager(this)
@@ -300,8 +303,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
}
}
}
setBackground()
}
override fun onNewIntent(intent: Intent) {
@@ -451,6 +453,16 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
mScrollTimer.isEnabled = false
}
override fun onColorSelected(dialogId: Int, color: Int){
if (dialogId == MANGA_B)
{
AppConfig.mangaBackground = color
setBackground()
}
}
override fun onDialogDismissed(dialogId: Int) = Unit
override fun loadFail(msg: String) {
lifecycleScope.launch {
if (loadingViewVisible) {
@@ -814,6 +826,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
}
private fun setBackground() {
binding.webtoonFrame.setBackgroundColor(AppConfig.mangaBackground)
}
private fun setRecyclerViewPreloader(maxPreload: Int) {
if (mRecyclerViewPreloader != null) {
@@ -4,15 +4,19 @@ 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
import com.jaredrummler.android.colorpicker.ColorPickerDialog
import io.legado.app.R
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
@@ -23,6 +27,10 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
class MangaFooterSettingDialog :
BaseBottomSheetDialogFragment(R.layout.dialog_manga_footer_setting) {
companion object {
const val MANGA_B = 1919
}
val config = GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull()
?: MangaFooterConfig()
@@ -62,6 +70,17 @@ class MangaFooterSettingDialog :
})
}
binding.btnBackgroundColor.color = AppConfig.mangaBackground
binding.btnBackgroundColor.setOnClickListener {
dismiss()
ColorPickerDialog.newBuilder()
.setColor(AppConfig.mangaBackground)
.setShowAlphaSlider(false)
.setDialogType(ColorPickerDialog.TYPE_CUSTOM)
.setDialogId(MANGA_B)
.show(requireActivity())
}
binding.llWebtoon.isVisible = initialScrollMode == MangaScrollMode.WEBTOON ||
initialScrollMode == MangaScrollMode.WEBTOON_WITH_GAP
@@ -243,6 +243,7 @@ class MangaMenu @JvmOverloads constructor(
ivSetting.setOnClickListener {
callBack.showFooterConfig()
runMenuOut()
}
btnAutoPage.setOnClickListener {