增加阅读菜单透明度调整 #81

This commit is contained in:
HapeLee
2025-10-12 13:14:45 +08:00
parent 16558242d8
commit 554dbb3e1e
9 changed files with 159 additions and 136 deletions
@@ -204,4 +204,5 @@ object PreferKey {
const val tabletInterface = "tabletInterface" const val tabletInterface = "tabletInterface"
const val pureBlack = "pure_black" const val pureBlack = "pure_black"
const val labelVisibilityMode = "labelVisibilityMode" const val labelVisibilityMode = "labelVisibilityMode"
const val menuAlpha = "menuAlpha"
} }
@@ -820,5 +820,11 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
set(value) { set(value) {
appCtx.putPrefString(PreferKey.labelVisibilityMode, value) appCtx.putPrefString(PreferKey.labelVisibilityMode, value)
} }
var menuAlpha
get() = appCtx.getPrefInt(PreferKey.menuAlpha, 100)
set(value) {
appCtx.putPrefInt(PreferKey.menuAlpha, value)
}
} }
@@ -12,6 +12,7 @@ import android.view.animation.Animation
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.SeekBar import android.widget.SeekBar
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.core.graphics.ColorUtils
import androidx.core.view.isGone import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
@@ -181,7 +182,6 @@ class ReadMenu @JvmOverloads constructor(
llBrightness.background = brightnessBackground llBrightness.background = brightnessBackground
if (AppConfig.isEInkMode) { if (AppConfig.isEInkMode) {
titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom) titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom)
llBottomBg.setBackgroundResource(R.drawable.bg_eink_border_top)
} else { } else {
//llBottomBg.setBackgroundColor(bgColor) //llBottomBg.setBackgroundColor(bgColor)
} }
@@ -195,6 +195,11 @@ class ReadMenu @JvmOverloads constructor(
} else { } else {
titleBarAddition.gone() titleBarAddition.gone()
} }
val alpha = (AppConfig.menuAlpha / 100f * 255).toInt()
val color = context.themeColor(com.google.android.material.R.attr.colorSurfaceContainer)
titleBar.setBackgroundColor(ColorUtils.setAlphaComponent(color, alpha))
bottomView.setBackgroundColor(ColorUtils.setAlphaComponent(color, alpha))
llSlider.alpha = AppConfig.menuAlpha / 100f
upBrightnessVwPos() upBrightnessVwPos()
/** /**
* 确保视图不被导航栏遮挡 * 确保视图不被导航栏遮挡
@@ -50,6 +50,7 @@ class MoreConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_more_conf
@SuppressLint("RestrictedApi") @SuppressLint("RestrictedApi")
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_config_read) addPreferencesFromResource(R.xml.pref_config_read)
upPreferenceSummary(PreferKey.menuAlpha, AppConfig.menuAlpha.toString())
upPreferenceSummary(PreferKey.pageTouchSlop, slopSquare.toString()) upPreferenceSummary(PreferKey.pageTouchSlop, slopSquare.toString())
if (!CanvasRecorderFactory.isSupport) { if (!CanvasRecorderFactory.isSupport) {
removePref(PreferKey.optimizeRender) removePref(PreferKey.optimizeRender)
@@ -144,6 +145,19 @@ class MoreConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_more_conf
(activity as? ReadBookActivity)?.showClickRegionalConfig() (activity as? ReadBookActivity)?.showClickRegionalConfig()
} }
PreferKey.menuAlpha -> {
NumberPickerDialog(requireContext())
.setTitle(getString(R.string.menu_alpha))
.setMaxValue(100)
.setMinValue(0)
.setValue(AppConfig.menuAlpha)
.show {
AppConfig.menuAlpha = it
upPreferenceSummary(PreferKey.menuAlpha, it.toString())
postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
}
}
PreferKey.pageTouchSlop -> { PreferKey.pageTouchSlop -> {
NumberPickerDialog(requireContext()) NumberPickerDialog(requireContext())
.setTitle(getString(R.string.page_touch_slop_dialog_title)) .setTitle(getString(R.string.page_touch_slop_dialog_title))
@@ -163,6 +177,8 @@ class MoreConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_more_conf
private fun upPreferenceSummary(preferenceKey: String, value: String?) { private fun upPreferenceSummary(preferenceKey: String, value: String?) {
val preference = findPreference<Preference>(preferenceKey) ?: return val preference = findPreference<Preference>(preferenceKey) ?: return
when (preferenceKey) { when (preferenceKey) {
PreferKey.menuAlpha -> preference.summary =
getString(R.string.menu_alpha_sum, AppConfig.menuAlpha)
PreferKey.pageTouchSlop -> preference.summary = PreferKey.pageTouchSlop -> preference.summary =
getString(R.string.page_touch_slop_summary, value) getString(R.string.page_touch_slop_summary, value)
} }
+62 -70
View File
@@ -20,7 +20,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/colorSurfaceContainer" android:background="?attr/colorSurfaceContainer"
android:alpha="0.92"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<LinearLayout <LinearLayout
@@ -121,85 +120,78 @@
android:id="@+id/bottom_menu" android:id="@+id/bottom_menu"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:alpha="0.92"
android:orientation="horizontal" android:orientation="horizontal"
android:background="@android:color/transparent"
app:layout_constraintBottom_toBottomOf="parent"> app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout <View
android:id="@+id/ll_bottom_bg" android:layout_width="0dp"
android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_weight="2" />
<!--章节设置-->
<LinearLayout
android:id="@+id/ll_slider"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_marginVertical="8dp"
android:importantForAccessibility="no"
android:gravity="center"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_pre"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:clickable="true"
android:importantForAccessibility="no" android:enabled="false"
android:orientation="horizontal"> android:focusable="true"
app:icon="@drawable/ic_previous"
android:contentDescription="@string/previous_chapter"
tools:ignore="TouchTargetSizeCheck" />
<View <com.google.android.material.card.MaterialCardView
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:layout_weight="2" /> android:layout_weight="1"
app:cardCornerRadius="32dp"
<!--章节设置--> app:cardBackgroundColor="?attr/colorSurfaceContainer"
<LinearLayout app:strokeWidth="0dp">
android:layout_width="0dp" <com.google.android.material.slider.Slider
android:id="@+id/seek_read_page"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="2" android:layout_gravity="center_vertical"/>
android:layout_marginVertical="8dp" </com.google.android.material.card.MaterialCardView>
android:importantForAccessibility="no"
android:gravity="center"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/tv_pre" android:id="@+id/tv_next"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal" style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:clickable="true" android:clickable="true"
android:enabled="false" android:enabled="false"
android:focusable="true" android:focusable="true"
app:icon="@drawable/ic_previous" app:icon="@drawable/ic_next"
android:contentDescription="@string/previous_chapter" android:contentDescription="@string/next_chapter"
tools:ignore="TouchTargetSizeCheck" /> tools:ignore="TouchTargetSizeCheck"/>
</LinearLayout>
<com.google.android.material.card.MaterialCardView <com.google.android.material.button.MaterialButtonGroup
android:layout_width="0dp" android:id="@+id/bottom_view"
android:layout_height="wrap_content" android:layout_width="0dp"
android:layout_weight="1" android:layout_height="wrap_content"
app:cardCornerRadius="32dp" android:layout_weight="2"
app:cardBackgroundColor="?attr/colorSurfaceContainer" android:importantForAccessibility="no"
app:strokeWidth="0dp"> android:paddingVertical="8dp"
<com.google.android.material.slider.Slider android:gravity="center"
android:id="@+id/seek_read_page" android:paddingHorizontal="16dp"
android:layout_width="match_parent" android:orientation="horizontal">
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"/>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton </com.google.android.material.button.MaterialButtonGroup>
android:id="@+id/tv_next"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:enabled="false"
android:focusable="true"
app:icon="@drawable/ic_next"
android:contentDescription="@string/next_chapter"
tools:ignore="TouchTargetSizeCheck"/>
</LinearLayout>
<com.google.android.material.button.MaterialButtonGroup
android:id="@+id/bottom_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:importantForAccessibility="no"
android:paddingVertical="8dp"
android:gravity="center"
android:paddingHorizontal="16dp"
android:orientation="horizontal">
</com.google.android.material.button.MaterialButtonGroup>
</LinearLayout>
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
+57 -65
View File
@@ -20,7 +20,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/colorSurfaceContainer" android:background="?attr/colorSurfaceContainer"
android:alpha="0.92"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<LinearLayout <LinearLayout
@@ -118,82 +117,75 @@
android:id="@+id/bottom_menu" android:id="@+id/bottom_menu"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:alpha="0.92"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"> app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout <!--章节设置-->
android:id="@+id/ll_bottom_bg" <LinearLayout
android:layout_width="match_parent" android:id="@+id/ll_slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp"
android:layout_marginHorizontal="16dp"
android:importantForAccessibility="no"
android:gravity="center"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_pre"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:clickable="true"
android:importantForAccessibility="no" android:enabled="false"
android:orientation="vertical"> android:focusable="true"
<!--章节设置--> app:icon="@drawable/ic_previous"
<LinearLayout android:contentDescription="@string/previous_chapter"
tools:ignore="TouchTargetSizeCheck" />
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:cardCornerRadius="32dp"
app:cardBackgroundColor="?attr/colorSurfaceContainer"
app:strokeWidth="0dp">
<com.google.android.material.slider.Slider
android:id="@+id/seek_read_page"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="8dp" android:layout_gravity="center_vertical"/>
android:layout_marginHorizontal="16dp" </com.google.android.material.card.MaterialCardView>
android:importantForAccessibility="no"
android:gravity="center"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_pre"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:enabled="false"
android:focusable="true"
app:icon="@drawable/ic_previous"
android:contentDescription="@string/previous_chapter"
tools:ignore="TouchTargetSizeCheck" />
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:cardCornerRadius="32dp"
app:cardBackgroundColor="?attr/colorSurfaceContainer"
app:strokeWidth="0dp">
<com.google.android.material.slider.Slider
android:id="@+id/seek_read_page"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"/>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/tv_next" android:id="@+id/tv_next"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal" style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:clickable="true" android:clickable="true"
android:enabled="false" android:enabled="false"
android:focusable="true" android:focusable="true"
app:icon="@drawable/ic_next" app:icon="@drawable/ic_next"
android:contentDescription="@string/next_chapter" android:contentDescription="@string/next_chapter"
tools:ignore="TouchTargetSizeCheck"/> tools:ignore="TouchTargetSizeCheck"/>
</LinearLayout> </LinearLayout>
<com.google.android.material.button.MaterialButtonGroup <com.google.android.material.button.MaterialButtonGroup
android:id="@+id/bottom_view" android:id="@+id/bottom_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:importantForAccessibility="no" android:importantForAccessibility="no"
android:paddingVertical="8dp" android:paddingVertical="8dp"
android:paddingHorizontal="16dp" android:paddingHorizontal="16dp"
android:background="?attr/colorSurfaceContainer" android:background="?attr/colorSurfaceContainer"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
</com.google.android.material.button.MaterialButtonGroup> </com.google.android.material.button.MaterialButtonGroup>
</LinearLayout>
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
+2
View File
@@ -1286,4 +1286,6 @@
<string name="delay_book_load">延缓书籍加载</string> <string name="delay_book_load">延缓书籍加载</string>
<string name="compact_list">紧凑列表</string> <string name="compact_list">紧凑列表</string>
<string name="author_read">%s • %d章未读</string> <string name="author_read">%s • %d章未读</string>
<string name="menu_alpha_sum">当前 %d%%</string>
<string name="menu_alpha">菜单透明度</string>
</resources> </resources>
+2
View File
@@ -1287,4 +1287,6 @@
<string name="delay_book_load">Delay Book Loading</string> <string name="delay_book_load">Delay Book Loading</string>
<string name="compact_list">Compact List</string> <string name="compact_list">Compact List</string>
<string name="author_read">%s • %dNot read</string> <string name="author_read">%s • %dNot read</string>
<string name="menu_alpha_sum">Current %d%%</string>
<string name="menu_alpha">Menu transparency</string>
</resources> </resources>
@@ -28,6 +28,13 @@
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:isBottomBackground="true" /> app:isBottomBackground="true" />
<io.legato.kazusa.lib.prefs.Preference
android:key="menuAlpha"
android:summary="@string/menu_alpha_sum"
android:title="@string/menu_alpha"
app:iconSpaceReserved="false"
app:isBottomBackground="true" />
<io.legato.kazusa.lib.prefs.SwitchPreference <io.legato.kazusa.lib.prefs.SwitchPreference
android:defaultValue="false" android:defaultValue="false"
android:key="hideStatusBar" android:key="hideStatusBar"