漫画背景自定义 #270
This commit is contained in:
@@ -411,7 +411,8 @@ data class Book(
|
|||||||
|
|
||||||
val mangaColorFilter: String? = null,
|
val mangaColorFilter: String? = null,
|
||||||
var mangaScrollMode: Int? = null,
|
var mangaScrollMode: Int? = null,
|
||||||
var webtoonSidePaddingDp: Int? = null
|
var webtoonSidePaddingDp: Int? = null,
|
||||||
|
var mangaBackground: String? = null
|
||||||
|
|
||||||
) : Parcelable
|
) : Parcelable
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import android.view.animation.LinearInterpolator
|
|||||||
import androidx.activity.addCallback
|
import androidx.activity.addCallback
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.core.graphics.toColorInt
|
||||||
import androidx.core.view.doOnLayout
|
import androidx.core.view.doOnLayout
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
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.bumptech.glide.util.FixedPreloadSizeProvider
|
||||||
import com.google.android.material.transition.platform.MaterialContainerTransform
|
import com.google.android.material.transition.platform.MaterialContainerTransform
|
||||||
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
||||||
|
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener
|
||||||
import io.legado.app.BuildConfig
|
import io.legado.app.BuildConfig
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.VMBaseActivity
|
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.MangaColorFilterConfig
|
||||||
import io.legado.app.ui.book.manga.config.MangaColorFilterDialog
|
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
|
||||||
|
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.config.MangaScrollMode
|
||||||
import io.legado.app.ui.book.manga.entities.BaseMangaPage
|
import io.legado.app.ui.book.manga.entities.BaseMangaPage
|
||||||
import io.legado.app.ui.book.manga.entities.MangaFooterConfig
|
import io.legado.app.ui.book.manga.entities.MangaFooterConfig
|
||||||
@@ -88,7 +91,7 @@ import kotlin.math.ceil
|
|||||||
class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewModel>(),
|
class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewModel>(),
|
||||||
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack,
|
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack,
|
||||||
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback, MangaFooterSettingDialog.Callback,
|
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback, MangaFooterSettingDialog.Callback,
|
||||||
MangaAutoReadDialog.Callback {
|
MangaAutoReadDialog.Callback, ColorPickerDialogListener {
|
||||||
|
|
||||||
private val mLayoutManager by lazy {
|
private val mLayoutManager by lazy {
|
||||||
MangaLayoutManager(this)
|
MangaLayoutManager(this)
|
||||||
@@ -300,8 +303,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
setBackground()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onNewIntent(intent: Intent) {
|
override fun onNewIntent(intent: Intent) {
|
||||||
@@ -451,6 +453,16 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
mScrollTimer.isEnabled = false
|
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) {
|
override fun loadFail(msg: String) {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
if (loadingViewVisible) {
|
if (loadingViewVisible) {
|
||||||
@@ -814,6 +826,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setBackground() {
|
||||||
|
binding.webtoonFrame.setBackgroundColor(AppConfig.mangaBackground)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun setRecyclerViewPreloader(maxPreload: Int) {
|
private fun setRecyclerViewPreloader(maxPreload: Int) {
|
||||||
if (mRecyclerViewPreloader != null) {
|
if (mRecyclerViewPreloader != null) {
|
||||||
|
|||||||
@@ -4,15 +4,19 @@ import android.content.DialogInterface
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.core.graphics.toColorInt
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.transition.TransitionManager
|
import androidx.transition.TransitionManager
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
|
import com.jaredrummler.android.colorpicker.ColorPickerDialog
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||||
import io.legado.app.constant.EventBus
|
import io.legado.app.constant.EventBus
|
||||||
import io.legado.app.databinding.DialogMangaFooterSettingBinding
|
import io.legado.app.databinding.DialogMangaFooterSettingBinding
|
||||||
import io.legado.app.help.config.AppConfig
|
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.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.ui.widget.ReaderInfoBarView
|
||||||
import io.legado.app.utils.GSON
|
import io.legado.app.utils.GSON
|
||||||
import io.legado.app.utils.fromJsonObject
|
import io.legado.app.utils.fromJsonObject
|
||||||
@@ -23,6 +27,10 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
|
|||||||
class MangaFooterSettingDialog :
|
class MangaFooterSettingDialog :
|
||||||
BaseBottomSheetDialogFragment(R.layout.dialog_manga_footer_setting) {
|
BaseBottomSheetDialogFragment(R.layout.dialog_manga_footer_setting) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val MANGA_B = 1919
|
||||||
|
}
|
||||||
|
|
||||||
val config = GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull()
|
val config = GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull()
|
||||||
?: MangaFooterConfig()
|
?: 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 ||
|
binding.llWebtoon.isVisible = initialScrollMode == MangaScrollMode.WEBTOON ||
|
||||||
initialScrollMode == MangaScrollMode.WEBTOON_WITH_GAP
|
initialScrollMode == MangaScrollMode.WEBTOON_WITH_GAP
|
||||||
|
|
||||||
|
|||||||
@@ -243,6 +243,7 @@ class MangaMenu @JvmOverloads constructor(
|
|||||||
|
|
||||||
ivSetting.setOnClickListener {
|
ivSetting.setOnClickListener {
|
||||||
callBack.showFooterConfig()
|
callBack.showFooterConfig()
|
||||||
|
runMenuOut()
|
||||||
}
|
}
|
||||||
|
|
||||||
btnAutoPage.setOnClickListener {
|
btnAutoPage.setOnClickListener {
|
||||||
|
|||||||
@@ -62,7 +62,6 @@
|
|||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:singleLine="false"
|
android:singleLine="false"
|
||||||
app:chipSpacingVertical="0dp"
|
|
||||||
app:selectionRequired="true"
|
app:selectionRequired="true"
|
||||||
app:singleSelection="true" />
|
app:singleSelection="true" />
|
||||||
|
|
||||||
@@ -166,6 +165,7 @@
|
|||||||
<com.google.android.material.chip.ChipGroup
|
<com.google.android.material.chip.ChipGroup
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
android:paddingHorizontal="16dp">
|
android:paddingHorizontal="16dp">
|
||||||
|
|
||||||
<com.google.android.material.chip.Chip
|
<com.google.android.material.chip.Chip
|
||||||
@@ -282,6 +282,15 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<io.legado.app.ui.widget.AccentColorButton
|
||||||
|
android:id="@+id/btn_background_color"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="16dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:text="@string/bg_color"
|
||||||
|
style="@style/Widget.Material3Expressive.Button.OutlinedButton"/>
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButtonGroup
|
<com.google.android.material.button.MaterialButtonGroup
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
Reference in New Issue
Block a user