漫画背景自定义 #270
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user