阅读进度条开关 #125

This commit is contained in:
HapeLee
2025-10-22 19:44:34 +08:00
parent 310a6e78b0
commit 135afb4a1f
12 changed files with 107 additions and 25 deletions
@@ -53,6 +53,7 @@ object PreferKey {
const val threadCount = "threadCount"
const val webPort = "webPort"
const val keepLight = "keep_light"
const val readSliderMode = "read_slider_mode"
const val webService = "webService"
const val webDavUrl = "web_dav_url"
const val webDavAccount = "web_dav_account"
@@ -820,10 +820,16 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
appCtx.putPrefString(PreferKey.labelVisibilityMode, value)
}
var menuAlpha
var menuAlpha: Int
get() = appCtx.getPrefInt(PreferKey.menuAlpha, 100)
set(value) {
appCtx.putPrefInt(PreferKey.menuAlpha, value)
}
var readSliderMode
get() = appCtx.getPrefString(PreferKey.readSliderMode, "0")
set(value) {
appCtx.putPrefString(PreferKey.readSliderMode, value)
}
}
@@ -5,6 +5,7 @@ import android.content.Context
import android.content.res.Configuration
import android.graphics.drawable.GradientDrawable
import android.util.AttributeSet
import android.view.Gravity
import android.view.LayoutInflater
import android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
import android.view.animation.AlphaAnimation
@@ -36,6 +37,7 @@ import io.legato.kazusa.utils.activity
import io.legato.kazusa.utils.applyNavigationBarPadding
import io.legato.kazusa.utils.dpToPx
import io.legato.kazusa.utils.getPrefBoolean
import io.legato.kazusa.utils.getPrefString
import io.legato.kazusa.utils.gone
import io.legato.kazusa.utils.invisible
import io.legato.kazusa.utils.loadAnimation
@@ -172,7 +174,7 @@ class ReadMenu @JvmOverloads constructor(
private fun initView() = binding.run {
initAnimation()
updateSliderVisibility()
binding.bottomView.post {
val allButtons = getUserButtons()
renderButtons(binding.bottomView, allButtons)
@@ -435,23 +437,62 @@ class ReadMenu @JvmOverloads constructor(
}
})
//替换
//fabReplaceRule.setOnClickListener { callBack.openReplaceRule() }
//夜间模式
// fabNightTheme.setOnClickListener {
// AppConfig.isNightTheme = !AppConfig.isNightTheme
// ThemeConfig.applyDayNight(context)
// }
//上一章
tvPre.setOnClickListener { ReadBook.moveToPrevChapter(upContent = true, toLast = false) }
//下一章
tvNext.setOnClickListener { ReadBook.moveToNextChapter(true) }
}
private fun updateSliderVisibility() {
when (AppConfig.readSliderMode) {
"0" -> {
binding.llSlider.gravity = Gravity.CENTER
binding.llSlider.isVisible = true
binding.cdSlider.isVisible = true
binding.tvPre.isVisible = true
binding.tvNext.isVisible = true
}
"1" -> {
binding.llSlider.gravity = Gravity.CENTER
binding.llSlider.isVisible = false
binding.cdSlider.isVisible = false
binding.tvPre.isVisible = false
binding.tvNext.isVisible = false
}
"2" -> {
binding.llSlider.gravity = Gravity.START
binding.llSlider.isVisible = true
binding.cdSlider.isVisible = false
binding.tvPre.isVisible = true
binding.tvNext.isVisible = true
}
"3" -> {
binding.llSlider.gravity = Gravity.END
binding.llSlider.isVisible = true
binding.cdSlider.isVisible = false
binding.tvPre.isVisible = true
binding.tvNext.isVisible = true
}
"4" -> {
binding.llSlider.gravity = Gravity.CENTER
binding.llSlider.isVisible = true
binding.cdSlider.isVisible = true
binding.tvPre.isVisible = false
binding.tvNext.isVisible = false
}
else -> {
binding.llSlider.isVisible = true
binding.cdSlider.isVisible = true
binding.tvPre.isVisible = true
binding.tvNext.isVisible = true
}
}
}
private val buttonMap = mutableMapOf<String, MaterialButton>()
@@ -89,6 +89,7 @@ class MoreConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_more_conf
}
PreferKey.keepLight -> postEvent(key, true)
PreferKey.readSliderMode -> postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
PreferKey.textSelectAble -> postEvent(key, getPrefBoolean(key))
PreferKey.screenOrientation -> {
(activity as? ReadBookActivity)?.setOrientation()
@@ -153,6 +153,7 @@
tools:ignore="TouchTargetSizeCheck" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cd_slider"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
+10 -13
View File
@@ -120,7 +120,6 @@
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent">
<!--章节设置-->
<LinearLayout
android:id="@+id/ll_slider"
android:layout_width="match_parent"
@@ -144,6 +143,7 @@
tools:ignore="TouchTargetSizeCheck" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cd_slider"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
@@ -157,8 +157,6 @@
android:layout_gravity="center_vertical"/>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_next"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
@@ -172,16 +170,15 @@
tools:ignore="TouchTargetSizeCheck"/>
</LinearLayout>
<com.google.android.material.button.MaterialButtonGroup
android:id="@+id/bottom_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:overflowMode="menu"
android:paddingVertical="8dp"
android:paddingHorizontal="16dp"
android:background="?attr/colorSurfaceContainer"
android:orientation="horizontal"/>
<com.google.android.material.button.MaterialButtonGroup
android:id="@+id/bottom_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:overflowMode="menu"
android:paddingVertical="8dp"
android:paddingHorizontal="16dp"
android:background="?attr/colorSurfaceContainer"
android:orientation="horizontal"/>
</LinearLayout>
+8
View File
@@ -160,4 +160,12 @@
<item>不显示</item>
</string-array>
<string-array name="read_slider_mode">
<item>常驻</item>
<item>不显示</item>
<item>按钮置左</item>
<item>按钮置右</item>
<item>仅显示滑动条</item>
</string-array>
</resources>
+1
View File
@@ -1303,4 +1303,5 @@
<string name="day_night_switch">深浅色模式开关</string>
<string name="manga_long_click">长按保存图片</string>
<string name="read_type_long">长按设置为全局默认模式</string>
<string name="read_slider_mode">滑动条显示样式</string>
</resources>
+8
View File
@@ -89,4 +89,12 @@
<item>unlabeled</item>
</string-array>
<string-array name="read_slider_mode_value">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</string-array>
</resources>
+8
View File
@@ -85,6 +85,14 @@
<item>Always</item>
</string-array>
<string-array name="read_slider_mode">
<item>Always</item>
<item>Disable</item>
<item>Left button</item>
<item>Right button</item>
<item>Only slider</item>
</string-array>
<string-array name="screen_direction_title">
<item>@string/screen_unspecified</item>
<item>@string/screen_portrait</item>
+1
View File
@@ -1304,4 +1304,5 @@
<string name="day_night_switch">深浅色模式开关</string>
<string name="manga_long_click">长按保存图片</string>
<string name="read_type_long">长按设置为全局默认模式</string>
<string name="read_slider_mode">滑动条显示样式</string>
</resources>
@@ -28,6 +28,15 @@
app:iconSpaceReserved="false"
app:isBottomBackground="true" />
<io.legato.kazusa.lib.prefs.NameListPreference
android:defaultValue="0"
android:entries="@array/read_slider_mode"
android:entryValues="@array/read_slider_mode_value"
android:key="read_slider_mode"
android:title="@string/read_slider_mode"
app:iconSpaceReserved="false"
app:isBottomBackground="true" />
<io.legato.kazusa.lib.prefs.Preference
android:key="menuAlpha"
android:summary="@string/menu_alpha_sum"