修复一些问题

This commit is contained in:
HapeLee committed 2025-07-21 15:21:24 +08:00
1 parent 1701285d33
commit 47274f13d4
12 files changed
+103 -112

No files matched your search

@@ -520,30 +520,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
} }
} }
R.id.menu_manga_color_filter -> {
binding.mangaMenu.runMenuOut()
showDialogFragment(MangaColorFilterDialog())
}
R.id.menu_hide_manga_title -> {
item.isChecked = !item.isChecked
AppConfig.hideMangaTitle = item.isChecked
ReadManga.loadContent()
}
R.id.menu_disable_horizontal_animation -> {
item.isChecked = !item.isChecked
AppConfig.disableHorizontalAnimator = item.isChecked
if (item.isChecked) {
mPagerSnapHelper.attachToRecyclerView(null)
} else {
mPagerSnapHelper.attachToRecyclerView(binding.recyclerView)
}
}
} }
return super.onCompatOptionsItemSelected(item) return super.onCompatOptionsItemSelected(item)
} }
@@ -557,7 +533,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
override fun showFooterConfig() { override fun showFooterConfig() {
showDialogFragment(MangaFooterSettingDialog().apply { showDialogFragment(MangaFooterSettingDialog().apply {
initialAutoPageEnabled = enableAutoScrollPage initialAutoPageEnabled = enableAutoScrollPage
initialAutoPageSpeed = AppConfig.mangaAutoPageSpeed
callback = this@ReadMangaActivity callback = this@ReadMangaActivity
}) })
} }
@@ -569,7 +544,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
override fun showScrollModeDialog() { override fun showScrollModeDialog() {
showDialogFragment(MangaScrollModeDialog().apply { showDialogFragment(MangaScrollModeDialog().apply {
initialScrollMode = AppConfig.mangaScrollMode
callback = this@ReadMangaActivity callback = this@ReadMangaActivity
}) })
} }
@@ -617,6 +591,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
//自动翻页 //自动翻页
override fun onAutoPageToggle(enabled: Boolean) { override fun onAutoPageToggle(enabled: Boolean) {
enableAutoScroll = enabled
setAutoReadEnabled(enabled) setAutoReadEnabled(enabled)
} }
@@ -631,6 +606,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
// } // }
} }
override fun onHideMangaTitleChanged(hide: Boolean) {
AppConfig.hideMangaTitle = hide
ReadManga.loadContent()
}
override fun openBookInfoActivity() { override fun openBookInfoActivity() {
ReadManga.book?.let { ReadManga.book?.let {
bookInfoActivity.launch { bookInfoActivity.launch {
@@ -693,6 +673,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
return super.dispatchKeyEvent(event) return super.dispatchKeyEvent(event)
} }
/**
* 调整漫画类型
* @param mode 漫画类型
*/
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
private fun setScrollMode(mode: Int) { private fun setScrollMode(mode: Int) {
scrollMode = mode scrollMode = mode
@@ -729,12 +713,12 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
mPagerSnapHelper.attachToRecyclerView(null) mPagerSnapHelper.attachToRecyclerView(null)
} }
mAdapter.notifyDataSetChanged() mAdapter.notifyItemRangeChanged(0, mAdapter.itemCount)
} }
/** /**
* 调整条漫侧边留白设置 * 调整条漫侧边留白设置
* @param paddingDp 侧边留白距离,单位dp,默认16dp * @param paddingDp 侧边留白距离,单位dp
*/ */
private fun updateWebtoonSidePadding(paddingDp: Int) { private fun updateWebtoonSidePadding(paddingDp: Int) {
if (scrollMode != MangaScrollMode.WEBTOON && scrollMode != MangaScrollMode.WEBTOON_WITH_GAP) { if (scrollMode != MangaScrollMode.WEBTOON && scrollMode != MangaScrollMode.WEBTOON_WITH_GAP) {
@@ -772,14 +756,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
this.mMenu = menu this.mMenu = menu
menu.findItem(R.id.menu_pre_manga_number).title = menu.findItem(R.id.menu_pre_manga_number).title =
getString(R.string.pre_download_m, AppConfig.mangaPreDownloadNum) getString(R.string.pre_download_m, AppConfig.mangaPreDownloadNum)
menu.findItem(R.id.menu_hide_manga_title).isChecked = AppConfig.hideMangaTitle
menu.findItem(R.id.menu_disable_horizontal_animation).run {
isVisible =
AppConfig.enableMangaHorizontalScroll
isChecked = AppConfig.disableHorizontalAnimator
}
} }
private fun setDisableMangaScale(disable: Boolean) { private fun setDisableMangaScale(disable: Boolean) {
@@ -2,8 +2,8 @@ package io.legato.kazusa.ui.book.manga.config
import android.content.DialogInterface import android.content.DialogInterface
import android.os.Bundle import android.os.Bundle
import android.view.Gravity
import android.view.View import android.view.View
import androidx.transition.TransitionManager
import io.legato.kazusa.R import io.legato.kazusa.R
import io.legato.kazusa.base.BaseBottomSheetDialogFragment import io.legato.kazusa.base.BaseBottomSheetDialogFragment
import io.legato.kazusa.constant.EventBus import io.legato.kazusa.constant.EventBus
@@ -24,7 +24,6 @@ class MangaFooterSettingDialog :
var callback: Callback? = null var callback: Callback? = null
var initialAutoPageEnabled: Boolean = false var initialAutoPageEnabled: Boolean = false
var initialAutoPageSpeed: Int = 3
private val binding by viewBinding(DialogMangaFooterSettingBinding::bind) private val binding by viewBinding(DialogMangaFooterSettingBinding::bind)
@@ -126,6 +125,7 @@ class MangaFooterSettingDialog :
config.hideFooter = true config.hideFooter = true
} }
} }
updateChapterText()
postEvent(EventBus.UP_MANGA_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
@@ -143,6 +143,20 @@ class MangaFooterSettingDialog :
} }
private fun updateChapterText() { private fun updateChapterText() {
if (config.hideFooter) {
binding.tvChapter.visibility = View.INVISIBLE
return
} else {
binding.tvChapter.visibility = View.VISIBLE
}
binding.tvChapter.gravity = when (config.footerOrientation) {
ReaderInfoBarView.ALIGN_LEFT -> Gravity.START or Gravity.CENTER_VERTICAL
ReaderInfoBarView.ALIGN_CENTER -> Gravity.CENTER
else -> Gravity.START
}
val label = if (!config.hideChapterLabel) "章节" else "" val label = if (!config.hideChapterLabel) "章节" else ""
val chapter = if (!config.hideChapter) "1/45 " else "" val chapter = if (!config.hideChapter) "1/45 " else ""
val name = if (!config.hideChapterName) "第三话 " else "" val name = if (!config.hideChapterName) "第三话 " else ""
@@ -162,7 +176,6 @@ class MangaFooterSettingDialog :
progressLabel, progressLabel,
progress progress
).filter { it.isNotEmpty() } ).filter { it.isNotEmpty() }
TransitionManager.beginDelayedTransition(binding.rootView)
binding.tvChapter.text = parts.joinToString(" ") binding.tvChapter.text = parts.joinToString(" ")
} }
@@ -2,7 +2,6 @@ package io.legato.kazusa.ui.book.manga.config
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.transition.TransitionManager
import com.google.android.material.chip.Chip import com.google.android.material.chip.Chip
import io.legato.kazusa.R import io.legato.kazusa.R
import io.legato.kazusa.base.BaseBottomSheetDialogFragment import io.legato.kazusa.base.BaseBottomSheetDialogFragment
@@ -14,9 +13,6 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
private val binding by viewBinding(DialogMangaScrollModeBinding::bind) private val binding by viewBinding(DialogMangaScrollModeBinding::bind)
var initialScrollMode: Int = AppConfig.mangaScrollMode
var initialAutoPageSpeed: Int = AppConfig.mangaAutoPageSpeed
var initialSidePadding: Int = AppConfig.webtoonSidePaddingDp
var initialAutoPageEnabled: Boolean = false var initialAutoPageEnabled: Boolean = false
var callback: Callback? = null var callback: Callback? = null
@@ -31,10 +27,9 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
binding.chipGroupScrollMode.addView(Chip(requireContext()).apply { binding.chipGroupScrollMode.addView(Chip(requireContext()).apply {
text = MangaScrollMode.labelOf(mode) text = MangaScrollMode.labelOf(mode)
isCheckable = true isCheckable = true
isChecked = (mode == initialScrollMode) isChecked = (mode == AppConfig.mangaScrollMode)
setOnClickListener { setOnClickListener {
AppConfig.mangaScrollMode = mode
callback?.onScrollModeChanged(mode) callback?.onScrollModeChanged(mode)
binding.chipAutoPage.isChecked = false binding.chipAutoPage.isChecked = false
} }
@@ -52,7 +47,6 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
binding.checkboxDisableClickScroll.apply { binding.checkboxDisableClickScroll.apply {
isChecked = AppConfig.disableClickScroll isChecked = AppConfig.disableClickScroll
setOnCheckedChangeListener { _, isChecked -> setOnCheckedChangeListener { _, isChecked ->
AppConfig.disableClickScroll = isChecked
callback?.onClickScrollDisabledChanged(isChecked) callback?.onClickScrollDisabledChanged(isChecked)
} }
} }
@@ -60,17 +54,22 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
binding.checkboxDisableMangaScale.apply { binding.checkboxDisableMangaScale.apply {
isChecked = AppConfig.disableMangaScale isChecked = AppConfig.disableMangaScale
setOnCheckedChangeListener { _, isChecked -> setOnCheckedChangeListener { _, isChecked ->
AppConfig.disableMangaScale = isChecked
callback?.onMangaScaleDisabledChanged(isChecked) callback?.onMangaScaleDisabledChanged(isChecked)
} }
} }
binding.checkboxHideMangaTitle.apply {
isChecked = AppConfig.hideMangaTitle
setOnCheckedChangeListener { _, isChecked ->
callback?.onHideMangaTitleChanged(isChecked)
}
}
binding.scvPadding.apply { binding.scvPadding.apply {
valueFormat = { "$it %" } valueFormat = { "$it %" }
progress = initialSidePadding progress = AppConfig.webtoonSidePaddingDp
onChanged = { newValue -> onChanged = { newValue ->
callback?.upSidePadding(newValue) callback?.upSidePadding(newValue)
initialSidePadding = newValue
} }
} }
@@ -78,15 +77,13 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
} }
private fun initAutoPageSpeed(boolean: Boolean) { private fun initAutoPageSpeed(boolean: Boolean) {
TransitionManager.beginDelayedTransition(binding.rootView)
binding.scvAutoPageSpeed.run { binding.scvAutoPageSpeed.run {
isEnabled = boolean isEnabled = boolean
valueFormat = { "$it 秒" } valueFormat = { "$it 秒" }
progress = initialAutoPageSpeed progress = AppConfig.mangaAutoPageSpeed
onChanged = { newValue -> onChanged = { newValue ->
callback?.onAutoPageSpeedChanged(newValue) callback?.onAutoPageSpeedChanged(newValue)
initialAutoPageSpeed = newValue
} }
} }
} }
@@ -98,6 +95,7 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
fun onClickScrollDisabledChanged(disabled: Boolean) fun onClickScrollDisabledChanged(disabled: Boolean)
fun onMangaScaleDisabledChanged(disabled: Boolean) fun onMangaScaleDisabledChanged(disabled: Boolean)
fun upSidePadding(padding: Int) fun upSidePadding(padding: Int)
fun onHideMangaTitleChanged(hide: Boolean)
} }
} }
@@ -7,3 +7,5 @@ data class ReaderLoading(
val isVolume: Boolean = false val isVolume: Boolean = false
) : BaseMangaPage ) : BaseMangaPage
@@ -30,6 +30,7 @@ import io.legato.kazusa.ui.book.manga.entities.EpaperTransformation
import io.legato.kazusa.ui.book.manga.entities.GrayscaleTransformation import io.legato.kazusa.ui.book.manga.entities.GrayscaleTransformation
import io.legato.kazusa.ui.book.manga.entities.MangaPage import io.legato.kazusa.ui.book.manga.entities.MangaPage
import io.legato.kazusa.ui.book.manga.entities.ReaderLoading import io.legato.kazusa.ui.book.manga.entities.ReaderLoading
import io.legato.kazusa.utils.dpToPx
class MangaAdapter(private val context: Context) : class MangaAdapter(private val context: Context) :
@@ -141,6 +142,13 @@ class MangaAdapter(private val context: Context) :
binding.text.text = message binding.text.text = message
binding.textChapter.text = "" binding.textChapter.text = ""
} }
itemView.updateLayoutParams {
height = if (isHorizontal) {
MATCH_PARENT
} else {
96.dpToPx()
}
}
} }
} }
@@ -36,7 +36,7 @@ open class MangaVH<VB : ViewBinding>(val binding: VB, private val context: Conte
protected lateinit var mFlProgress: FrameLayout protected lateinit var mFlProgress: FrameLayout
protected var mRetry: Button? = null protected var mRetry: Button? = null
private val minHeight = context.resources.displayMetrics.heightPixels * 2 / 3 //private val minHeight = context.resources.displayMetrics.heightPixels * 2 / 3
fun initComponent( fun initComponent(
loading: ProgressBar, loading: ProgressBar,
@@ -111,7 +111,7 @@ open class MangaVH<VB : ViewBinding>(val binding: VB, private val context: Conte
mImage.updateLayoutParams<FrameLayout.LayoutParams> { mImage.updateLayoutParams<FrameLayout.LayoutParams> {
height = ViewGroup.LayoutParams.WRAP_CONTENT height = ViewGroup.LayoutParams.WRAP_CONTENT
} }
itemView.minimumHeight = minHeight itemView.minimumHeight = 0
} else { } else {
mImage.updateLayoutParams<FrameLayout.LayoutParams> { mImage.updateLayoutParams<FrameLayout.LayoutParams> {
height = ViewGroup.LayoutParams.MATCH_PARENT height = ViewGroup.LayoutParams.MATCH_PARENT
+15 -5
View File
@@ -44,7 +44,8 @@
<LinearLayout <LinearLayout
android:id="@+id/ll_loading" android:id="@+id/ll_loading"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:background="?attr/colorSurface"
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
@@ -61,7 +62,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:textColor="?attr/colorSurface"
android:text="@string/loading" /> android:text="@string/loading" />
</LinearLayout> </LinearLayout>
@@ -73,19 +73,29 @@
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<TextView
android:id="@+id/tv_msg2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Σ(#`O′)"
android:textColor="@color/white"
android:textSize="24sp" />
<TextView <TextView
android:id="@+id/tv_msg" android:id="@+id/tv_msg"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
android:textColor="@color/white" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/tv_retry" android:id="@+id/tv_retry"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.TonalButton" style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
app:icon="@drawable/ic_refresh"
android:layout_margin="16dp" android:layout_margin="16dp"
app:iconPadding="4dp"
android:text="重新加载" android:text="重新加载"
android:textSize="18sp"
tools:visibility="visible" /> tools:visibility="visible" />
</LinearLayout> </LinearLayout>
@@ -131,6 +131,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
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/checkboxHideMangaTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hide_manga_title" />
</LinearLayout> </LinearLayout>
@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="24dp"
android:background="@color/book_ant_10"> android:background="@color/book_ant_10">
<LinearLayout <TextView
android:id="@+id/ll_text" android:id="@+id/text"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:autoSizeMaxTextSize="12sp"
android:orientation="vertical" android:autoSizeMinTextSize="8sp"
android:padding="32dp"> android:autoSizePresetSizes="12sp"
android:autoSizeStepGranularity="2dp"
android:autoSizeTextType="uniform"
android:text="已读完"
android:textColor="@color/white"
android:textStyle="bold" />
<TextView <TextView
android:id="@+id/text" android:id="@+id/textChapter"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:layout_gravity="start" android:autoSizeMaxTextSize="22sp"
android:autoSizeTextType="uniform" android:autoSizeMinTextSize="12sp"
android:text="已读完" android:autoSizePresetSizes="22sp"
android:textColor="?attr/colorSurface" android:autoSizeStepGranularity="2dp"
android:textStyle="bold" /> android:autoSizeTextType="uniform"
android:text="下一章123"
<TextView android:textColor="@color/white"
android:id="@+id/textChapter" android:textSize="22sp"
android:layout_width="match_parent" android:textStyle="bold" />
android:layout_height="match_parent"
android:autoSizeTextType="uniform"
android:text="下一章123"
android:textColor="?attr/colorSurface"
android:textSize="22sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout> </LinearLayout>
-20
View File
@@ -25,24 +25,4 @@
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/menu_disable_horizontal_animation"
android:checkable="true"
android:checked="false"
android:title="@string/disable_horizontal_animation"
android:visible="false"
app:showAsAction="never" />
<item
android:id="@+id/menu_manga_color_filter"
android:title="@string/manga_color_filter"
app:showAsAction="never" />
<item
android:id="@+id/menu_hide_manga_title"
android:checkable="true"
android:checked="false"
android:title="@string/hide_manga_title"
app:showAsAction="never" />
</menu> </menu>
+1 -1
View File
@@ -1215,7 +1215,7 @@
<string name="manga_radio_center">居中</string> <string name="manga_radio_center">居中</string>
<string name="enable_manga_horizontal_scroll">水平滚动</string> <string name="enable_manga_horizontal_scroll">水平滚动</string>
<string name="manga_color_filter">滤镜</string> <string name="manga_color_filter">滤镜</string>
<string name="hide_manga_title">隐藏漫画列表标题</string> <string name="hide_manga_title">隐藏章节过渡界面</string>
<string name="refresh_explore">刷新发现</string> <string name="refresh_explore">刷新发现</string>
<string name="ungroup">未分组</string> <string name="ungroup">未分组</string>
<string name="dynamic_colors">动态取色</string> <string name="dynamic_colors">动态取色</string>
-2
View File
@@ -165,7 +165,6 @@
<string-array name="default_app_variant"> <string-array name="default_app_variant">
<item>@string/default_version</item>
<item>@string/official_version</item> <item>@string/official_version</item>
<item>@string/beta_release_version</item> <item>@string/beta_release_version</item>
<item>@string/beta_releaseA_version</item> <item>@string/beta_releaseA_version</item>
@@ -179,7 +178,6 @@
</string-array> </string-array>
<string-array name="default_app_variant_value"> <string-array name="default_app_variant_value">
<item>default_version</item>
<item>official_version</item> <item>official_version</item>
<item>beta_release_version</item> <item>beta_release_version</item>
<item>beta_releaseA_version</item> <item>beta_releaseA_version</item>