漫画新增配置:点击翻页动画、加载渐变动画开关 #240、#254
This commit is contained in:
@@ -211,5 +211,9 @@ object PreferKey {
|
|||||||
const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange"
|
const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange"
|
||||||
const val isPredictiveBackEnabled = "isPredictiveBackEnabled"
|
const val isPredictiveBackEnabled = "isPredictiveBackEnabled"
|
||||||
const val replaceSortMode = "desc"
|
const val replaceSortMode = "desc"
|
||||||
const val readBarStyle = "0"
|
const val readBarStyle = "readBarStyle"
|
||||||
|
//我在干什么
|
||||||
|
|
||||||
|
const val disableMangaScrollAnimation = "disableMangaScrollAnimation"
|
||||||
|
const val disableMangaCrossFade = "disableMangaCrossFade"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -722,6 +722,18 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
appCtx.putPrefBoolean(PreferKey.disableMangaScale, value)
|
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
|
var mangaPreDownloadNum
|
||||||
get() = appCtx.getPrefInt(PreferKey.mangaPreDownloadNum, 10)
|
get() = appCtx.getPrefInt(PreferKey.mangaPreDownloadNum, 10)
|
||||||
|
|||||||
@@ -147,19 +147,23 @@ object BookCover {
|
|||||||
if (sourceOrigin != null) {
|
if (sourceOrigin != null) {
|
||||||
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
|
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
|
||||||
}
|
}
|
||||||
return ImageLoader.load(context, path)
|
var builder = ImageLoader.load(context, path)
|
||||||
.apply(options)
|
.apply(options)
|
||||||
.override(context.resources.displayMetrics.widthPixels, SIZE_ORIGINAL)
|
.override(context.resources.displayMetrics.widthPixels, SIZE_ORIGINAL)
|
||||||
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
||||||
.skipMemoryCache(true).let {
|
.skipMemoryCache(true)
|
||||||
if (transformation != null) {
|
if (transformation != null) {
|
||||||
it.transform(transformation)
|
builder = builder.transform(transformation)
|
||||||
|
}
|
||||||
|
builder = if (AppConfig.disableMangaCrossFade) {
|
||||||
|
builder
|
||||||
} else {
|
} else {
|
||||||
it
|
builder.transition(DrawableTransitionOptions.withCrossFade())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return builder
|
||||||
}
|
}
|
||||||
.transition(DrawableTransitionOptions.withCrossFade())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun preloadManga(
|
fun preloadManga(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|||||||
@@ -635,6 +635,14 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
AppConfig.disableClickScroll = disabled
|
AppConfig.disableClickScroll = disabled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onScrollAniDisabledChanged(disabled: Boolean) {
|
||||||
|
AppConfig.disableMangaScrollAnimation = disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCrossFadeDisabledChanged(disabled: Boolean) {
|
||||||
|
AppConfig.disableMangaCrossFade = disabled
|
||||||
|
}
|
||||||
|
|
||||||
//双击缩放
|
//双击缩放
|
||||||
override fun onMangaScaleDisabledChanged(disabled: Boolean) {
|
override fun onMangaScaleDisabledChanged(disabled: Boolean) {
|
||||||
AppConfig.disableMangaScale = disabled
|
AppConfig.disableMangaScale = disabled
|
||||||
@@ -873,7 +881,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
}
|
}
|
||||||
dx *= direction
|
dx *= direction
|
||||||
dy *= direction
|
dy *= direction
|
||||||
|
if (!AppConfig.disableMangaScrollAnimation)
|
||||||
binding.recyclerView.smoothScrollBy(dx, dy)
|
binding.recyclerView.smoothScrollBy(dx, dy)
|
||||||
|
else
|
||||||
|
binding.recyclerView.scrollBy(dx, dy)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showNumberPickerDialog(
|
private fun showNumberPickerDialog(
|
||||||
|
|||||||
@@ -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 {
|
binding.checkboxDisableMangaScale.apply {
|
||||||
isChecked = AppConfig.disableMangaScale
|
isChecked = AppConfig.disableMangaScale
|
||||||
setOnCheckedChangeListener { _, isChecked ->
|
setOnCheckedChangeListener { _, isChecked ->
|
||||||
@@ -265,6 +279,8 @@ class MangaFooterSettingDialog :
|
|||||||
fun onScrollModeChanged(mode: Int)
|
fun onScrollModeChanged(mode: Int)
|
||||||
fun upSidePadding(padding: Int)
|
fun upSidePadding(padding: Int)
|
||||||
fun onClickScrollDisabledChanged(disabled: Boolean)
|
fun onClickScrollDisabledChanged(disabled: Boolean)
|
||||||
|
fun onScrollAniDisabledChanged(disabled: Boolean)
|
||||||
|
fun onCrossFadeDisabledChanged(disabled: Boolean)
|
||||||
fun onMangaScaleDisabledChanged(disabled: Boolean)
|
fun onMangaScaleDisabledChanged(disabled: Boolean)
|
||||||
fun onHideMangaTitleChanged(hide: Boolean)
|
fun onHideMangaTitleChanged(hide: Boolean)
|
||||||
fun onVolumeKeyPageChanged(enable: Boolean)
|
fun onVolumeKeyPageChanged(enable: Boolean)
|
||||||
|
|||||||
@@ -250,6 +250,12 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/disable_manga_scale" />
|
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
|
<com.google.android.material.checkbox.MaterialCheckBox
|
||||||
android:id="@+id/checkboxHideMangaTitle"
|
android:id="@+id/checkboxHideMangaTitle"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -267,6 +273,13 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/manga_long_click" />
|
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>
|
</LinearLayout>
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButtonGroup
|
<com.google.android.material.button.MaterialButtonGroup
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingVertical="8dp"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -41,7 +42,7 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
android:text="@string/read_config"
|
android:text="@string/read_config"
|
||||||
android:textSize="18sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
|
|||||||
@@ -26,9 +26,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:indeterminate="false"
|
android:indeterminate="false"
|
||||||
app:indicatorSize="80dp"
|
app:indicatorSize="64dp"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center" />
|
||||||
app:showAnimationBehavior="outward" />
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
|
|||||||
@@ -90,6 +90,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
|
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
|
||||||
|
app:backgroundTint="?attr/colorSurfaceContainer"
|
||||||
app:icon="@drawable/ic_previous"
|
app:icon="@drawable/ic_previous"
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
@@ -113,6 +114,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
|
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
|
||||||
|
app:backgroundTint="?attr/colorSurfaceContainer"
|
||||||
app:icon="@drawable/ic_next"
|
app:icon="@drawable/ic_next"
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -1335,4 +1335,6 @@
|
|||||||
<string name="text_typeface">字体样式</string>
|
<string name="text_typeface">字体样式</string>
|
||||||
<string name="shadow_typeface">阴影样式</string>
|
<string name="shadow_typeface">阴影样式</string>
|
||||||
<string name="long_click_to_custom">长按自定义</string>
|
<string name="long_click_to_custom">长按自定义</string>
|
||||||
|
<string name="disable_manga_scroll_animation">禁用翻页动画</string>
|
||||||
|
<string name="manga_cross_fade">禁用加载淡入动画</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1336,4 +1336,6 @@
|
|||||||
<string name="text_typeface">字体样式</string>
|
<string name="text_typeface">字体样式</string>
|
||||||
<string name="shadow_typeface">阴影样式</string>
|
<string name="shadow_typeface">阴影样式</string>
|
||||||
<string name="long_click_to_custom">长按自定义</string>
|
<string name="long_click_to_custom">长按自定义</string>
|
||||||
|
<string name="disable_manga_scroll_animation">禁用翻页动画</string>
|
||||||
|
<string name="manga_cross_fade">禁用加载淡入动画</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user