HapeLee 1 год назад
Родитель
Сommit
2c7aa63f58

+ 2 - 1
app/src/main/java/io/legado/app/data/entities/Book.kt

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

+ 19 - 3
app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt

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

+ 19 - 0
app/src/main/java/io/legado/app/ui/book/manga/config/MangaFooterSettingDialog.kt

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

+ 1 - 0
app/src/main/java/io/legado/app/ui/book/read/MangaMenu.kt

@@ -243,6 +243,7 @@ class MangaMenu @JvmOverloads constructor(
 
 
         ivSetting.setOnClickListener {
         ivSetting.setOnClickListener {
             callBack.showFooterConfig()
             callBack.showFooterConfig()
+            runMenuOut()
         }
         }
 
 
         btnAutoPage.setOnClickListener {
         btnAutoPage.setOnClickListener {

+ 10 - 1
app/src/main/res/layout/dialog_manga_footer_setting.xml

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