ソースを参照

漫画新增配置:点击翻页动画、加载渐变动画开关 #240、#254

HapeLee 1 年間 前
親
コミット
c9708d36a1

+ 5 - 1
app/src/main/java/io/legado/app/constant/PreferKey.kt

@@ -211,5 +211,9 @@ object PreferKey {
     const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange"
     const val isPredictiveBackEnabled = "isPredictiveBackEnabled"
     const val replaceSortMode = "desc"
-    const val readBarStyle = "0"
+    const val readBarStyle = "readBarStyle"
+    //我在干什么
+
+    const val disableMangaScrollAnimation = "disableMangaScrollAnimation"
+    const val disableMangaCrossFade = "disableMangaCrossFade"
 }

+ 12 - 0
app/src/main/java/io/legado/app/help/config/AppConfig.kt

@@ -722,6 +722,18 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
             appCtx.putPrefBoolean(PreferKey.disableMangaScale, value)
         }
 
+    var disableMangaScrollAnimation: Boolean
+        get() = appCtx.getPrefBoolean(PreferKey.disableMangaScrollAnimation, false)
+        set(value) {
+            appCtx.putPrefBoolean(PreferKey.disableMangaScrollAnimation, value)
+        }
+
+    var disableMangaCrossFade: Boolean
+        get() = appCtx.getPrefBoolean(PreferKey.disableMangaCrossFade, false)
+        set(value) {
+            appCtx.putPrefBoolean(PreferKey.disableMangaCrossFade, value)
+        }
+
     //漫画预加载数量
     var mangaPreDownloadNum
         get() = appCtx.getPrefInt(PreferKey.mangaPreDownloadNum, 10)

+ 13 - 9
app/src/main/java/io/legado/app/model/BookCover.kt

@@ -147,20 +147,24 @@ object BookCover {
         if (sourceOrigin != null) {
             options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
         }
-        return ImageLoader.load(context, path)
+        var builder = ImageLoader.load(context, path)
             .apply(options)
             .override(context.resources.displayMetrics.widthPixels, SIZE_ORIGINAL)
             .diskCacheStrategy(DiskCacheStrategy.ALL)
-            .skipMemoryCache(true).let {
-                if (transformation != null) {
-                    it.transform(transformation)
-                } else {
-                    it
-                }
-            }
-            .transition(DrawableTransitionOptions.withCrossFade())
+            .skipMemoryCache(true)
+        if (transformation != null) {
+            builder = builder.transform(transformation)
+        }
+        builder = if (AppConfig.disableMangaCrossFade) {
+            builder
+        } else {
+            builder.transition(DrawableTransitionOptions.withCrossFade())
+        }
+
+        return builder
     }
 
+
     fun preloadManga(
         context: Context,
         path: String?,

+ 13 - 1
app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt

@@ -635,6 +635,14 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
         AppConfig.disableClickScroll = disabled
     }
 
+    override fun onScrollAniDisabledChanged(disabled: Boolean) {
+        AppConfig.disableMangaScrollAnimation = disabled
+    }
+
+    override fun onCrossFadeDisabledChanged(disabled: Boolean) {
+        AppConfig.disableMangaCrossFade = disabled
+    }
+
     //双击缩放
     override fun onMangaScaleDisabledChanged(disabled: Boolean) {
         AppConfig.disableMangaScale = disabled
@@ -873,7 +881,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
         }
         dx *= direction
         dy *= direction
-        binding.recyclerView.smoothScrollBy(dx, dy)
+        if (!AppConfig.disableMangaScrollAnimation)
+            binding.recyclerView.smoothScrollBy(dx, dy)
+        else
+            binding.recyclerView.scrollBy(dx, dy)
+
     }
 
     private fun showNumberPickerDialog(

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

@@ -80,6 +80,20 @@ class MangaFooterSettingDialog :
             }
         }
 
+        binding.checkboxScrollAnimation.apply {
+            isChecked = AppConfig.disableMangaScrollAnimation
+            setOnCheckedChangeListener { _, isChecked ->
+                callback?.onScrollAniDisabledChanged(isChecked)
+            }
+        }
+
+        binding.checkboxMangaCrossFade.apply {
+            isChecked = AppConfig.disableMangaCrossFade
+            setOnCheckedChangeListener { _, isChecked ->
+                callback?.onCrossFadeDisabledChanged(isChecked)
+            }
+        }
+
         binding.checkboxDisableMangaScale.apply {
             isChecked = AppConfig.disableMangaScale
             setOnCheckedChangeListener { _, isChecked ->
@@ -265,6 +279,8 @@ class MangaFooterSettingDialog :
         fun onScrollModeChanged(mode: Int)
         fun upSidePadding(padding: Int)
         fun onClickScrollDisabledChanged(disabled: Boolean)
+        fun onScrollAniDisabledChanged(disabled: Boolean)
+        fun onCrossFadeDisabledChanged(disabled: Boolean)
         fun onMangaScaleDisabledChanged(disabled: Boolean)
         fun onHideMangaTitleChanged(hide: Boolean)
         fun onVolumeKeyPageChanged(enable: Boolean)

+ 13 - 0
app/src/main/res/layout/dialog_manga_footer_setting.xml

@@ -250,6 +250,12 @@
                 android:layout_height="wrap_content"
                 android:text="@string/disable_manga_scale" />
 
+            <com.google.android.material.checkbox.MaterialCheckBox
+                android:id="@+id/checkboxScrollAnimation"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/disable_manga_scroll_animation" />
+
             <com.google.android.material.checkbox.MaterialCheckBox
                 android:id="@+id/checkboxHideMangaTitle"
                 android:layout_width="match_parent"
@@ -267,6 +273,13 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/manga_long_click" />
+
+            <com.google.android.material.checkbox.MaterialCheckBox
+                android:id="@+id/checkboxMangaCrossFade"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/manga_cross_fade" />
+
         </LinearLayout>
 
         <com.google.android.material.button.MaterialButtonGroup

+ 2 - 1
app/src/main/res/layout/dialog_read_book_style.xml

@@ -30,6 +30,7 @@
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:paddingVertical="8dp"
                 android:orientation="horizontal">
 
                 <TextView
@@ -41,7 +42,7 @@
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toTopOf="parent"
                     android:text="@string/read_config"
-                    android:textSize="18sp"
+                    android:textSize="16sp"
                     android:textStyle="bold" />
 
                 <com.google.android.material.button.MaterialButton

+ 2 - 3
app/src/main/res/layout/item_book_manga_page.xml

@@ -26,9 +26,8 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:indeterminate="false"
-            app:indicatorSize="80dp"
-            android:layout_gravity="center"
-            app:showAnimationBehavior="outward" />
+            app:indicatorSize="64dp"
+            android:layout_gravity="center" />
 
 
         <com.google.android.material.button.MaterialButton

+ 2 - 0
app/src/main/res/layout/view_manga_menu.xml

@@ -90,6 +90,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
+                app:backgroundTint="?attr/colorSurfaceContainer"
                 app:icon="@drawable/ic_previous"
                 tools:ignore="TouchTargetSizeCheck" />
 
@@ -113,6 +114,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
+                app:backgroundTint="?attr/colorSurfaceContainer"
                 app:icon="@drawable/ic_next"
                 tools:ignore="TouchTargetSizeCheck" />
         </LinearLayout>

+ 2 - 0
app/src/main/res/values-zh/strings.xml

@@ -1335,4 +1335,6 @@
     <string name="text_typeface">字体样式</string>
     <string name="shadow_typeface">阴影样式</string>
     <string name="long_click_to_custom">长按自定义</string>
+    <string name="disable_manga_scroll_animation">禁用翻页动画</string>
+    <string name="manga_cross_fade">禁用加载淡入动画</string>
 </resources>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -1336,4 +1336,6 @@
     <string name="text_typeface">字体样式</string>
     <string name="shadow_typeface">阴影样式</string>
     <string name="long_click_to_custom">长按自定义</string>
+    <string name="disable_manga_scroll_animation">禁用翻页动画</string>
+    <string name="manga_cross_fade">禁用加载淡入动画</string>
 </resources>