更新界面

This commit is contained in:
HapeLee committed 2025-07-10 04:25:54 +08:00
1 parent 3516af6a9f
commit 3c494cfc9a
24 files changed
+666 -302

No files matched your search

@@ -6,6 +6,7 @@ import android.graphics.drawable.GradientDrawable
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.widget.FrameLayout
import android.widget.SeekBar
@@ -36,6 +37,7 @@ import io.legato.kazusa.utils.modifyBegin
import io.legato.kazusa.utils.openUrl
import io.legato.kazusa.utils.putPrefBoolean
import io.legato.kazusa.utils.startActivity
import io.legato.kazusa.utils.themeColor
import io.legato.kazusa.utils.visible
import splitties.views.onClick
import splitties.views.onLongClick
@@ -52,6 +54,7 @@ class ReadMenu @JvmOverloads constructor(
private val binding = ViewReadMenuBinding.inflate(LayoutInflater.from(context), this, true)
private var confirmSkipToChapter: Boolean = false
private var isMenuOutAnimating = false
private val menuTopIn: Animation by lazy {
loadAnimation(context, R.anim.anim_readbook_top_in)
}
@@ -64,6 +67,17 @@ class ReadMenu @JvmOverloads constructor(
private val menuBottomOut: Animation by lazy {
loadAnimation(context, R.anim.anim_readbook_bottom_out)
}
private val fadeIn = AlphaAnimation(0f, 1f).apply {
duration = 280
fillAfter = true
}
private val fadeOut = AlphaAnimation(1f, 0f).apply {
duration = 280
fillAfter = true
}
// private val immersiveMenu: Boolean
// get() = AppConfig.readBarStyleFollowPage && ReadBookConfig.durConfig.curBgType() == 0
// private var bgColor: Int = if (immersiveMenu) {
@@ -84,11 +98,13 @@ class ReadMenu @JvmOverloads constructor(
// .setPressedColor(ColorUtils.darkenColor(bgColor))
// .create()
private var onMenuOutEnd: (() -> Unit)? = null
private val showBrightnessView
get() = context.getPrefBoolean(
PreferKey.showBrightnessView,
true
)
private val sourceMenu by lazy {
PopupMenu(context, binding.tvSourceAction).apply {
inflate(R.menu.book_read_source)
@@ -249,10 +265,10 @@ class ReadMenu @JvmOverloads constructor(
fun upBrightnessState() {
if (brightnessAuto()) {
//binding.ivBrightnessAuto.setColorFilter(context.accentColor)
binding.ivBrightnessAuto.setColorFilter(context.themeColor(com.google.android.material.R.attr.colorPrimary))
binding.seekBrightness.isEnabled = false
} else {
//binding.ivBrightnessAuto.setColorFilter(context.buttonDisabledColor)
binding.ivBrightnessAuto.setColorFilter(context.themeColor(com.google.android.material.R.attr.colorOnSurface))
binding.seekBrightness.isEnabled = true
}
setScreenBrightness(AppConfig.readBrightness.toFloat())
@@ -283,6 +299,7 @@ class ReadMenu @JvmOverloads constructor(
if (anim) {
binding.titleBar.startAnimation(menuTopIn)
binding.bottomMenu.startAnimation(menuBottomIn)
updateBrightnessVisibility(true)
} else {
menuInListener.onAnimationStart(menuBottomIn)
menuInListener.onAnimationEnd(menuBottomIn)
@@ -299,6 +316,8 @@ class ReadMenu @JvmOverloads constructor(
if (anim) {
binding.titleBar.startAnimation(menuTopOut)
binding.bottomMenu.startAnimation(menuBottomOut)
updateBrightnessVisibility(false)
} else {
menuOutListener.onAnimationStart(menuBottomOut)
menuOutListener.onAnimationEnd(menuBottomOut)
@@ -306,6 +325,16 @@ class ReadMenu @JvmOverloads constructor(
}
}
fun updateBrightnessVisibility(boolean: Boolean) {
if (showBrightnessView) {
if(boolean){
binding.llBrightness.startAnimation(fadeIn)
}else{
binding.llBrightness.startAnimation(fadeOut)
}
}
}
private fun brightnessAuto(): Boolean {
return context.getPrefBoolean("brightnessAuto", true) || !showBrightnessView
}
@@ -4,14 +4,14 @@ import android.content.DialogInterface
import android.os.Bundle
import android.view.View
import io.legato.kazusa.R
import io.legato.kazusa.base.BaseDialogFragment
import io.legato.kazusa.base.BaseBottomSheetDialogFragment
import io.legato.kazusa.constant.EventBus
import io.legato.kazusa.databinding.DialogReadPaddingBinding
import io.legato.kazusa.help.config.ReadBookConfig
import io.legato.kazusa.utils.postEvent
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
class PaddingConfigDialog : BaseDialogFragment(R.layout.dialog_read_padding) {
class PaddingConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_padding) {
private val binding by viewBinding(DialogReadPaddingBinding::bind)
@@ -1,7 +1,6 @@
package io.legato.kazusa.ui.book.read.config
import android.content.DialogInterface
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
@@ -20,15 +19,11 @@ import io.legato.kazusa.lib.dialogs.selector
import io.legato.kazusa.model.ReadBook
import io.legato.kazusa.ui.book.read.ReadBookActivity
import io.legato.kazusa.ui.font.FontSelectDialog
import io.legato.kazusa.ui.widget.DetailSeekBar
import io.legato.kazusa.utils.ChineseUtils
import io.legato.kazusa.utils.postEvent
import io.legato.kazusa.utils.showDialogFragment
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
import splitties.views.onLongClick
import androidx.core.graphics.drawable.toDrawable
import androidx.transition.TransitionManager
import com.google.android.material.bottomsheet.BottomSheetBehavior
import io.legato.kazusa.help.config.ThemeConfig
class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_style),
@@ -38,8 +33,6 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_
private val callBack get() = activity as? ReadBookActivity
private lateinit var styleAdapter: StyleAdapter
private lateinit var allSliders: List<DetailSeekBar>
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
(activity as ReadBookActivity).bottomDialog++
initView()
@@ -158,22 +151,6 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_
postEvent(EventBus.UP_CONFIG, arrayListOf(1, 2, 5))
}
allSliders = listOf(
dsbTextSize,
dsbTextLetterSpacing,
dsbLineSize,
dsbParagraphSpacing
)
allSliders.forEach { seekBar ->
seekBar.onStartTracking = {
setOnlyActiveSeekBarVisible(seekBar, true)
}
seekBar.onStopTracking = {
setOnlyActiveSeekBarVisible(seekBar, false)
}
}
dsbTextSize.onChanged = {
ReadBookConfig.textSize = it + 5
postEvent(EventBus.UP_CONFIG, arrayListOf(8, 5))
@@ -192,24 +169,6 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_
}
}
private fun setOnlyActiveSeekBarVisible(activeSeekBar: DetailSeekBar, visible: Boolean) {
TransitionManager.beginDelayedTransition(binding.rootView)
if (visible) {
binding.setBar.visibility = View.GONE
binding.setBottomBar.visibility = View.GONE
} else {
binding.setBar.visibility = View.VISIBLE
binding.setBottomBar.visibility = View.VISIBLE
}
allSliders.forEach { seekBar ->
if (seekBar != activeSeekBar) {
seekBar.visibility = if (visible) View.GONE else View.VISIBLE
}
}
}
private fun changeBgTextConfig(index: Int) {
val oldIndex = ReadBookConfig.styleSelect
if (index != oldIndex) {
@@ -2,10 +2,9 @@ package io.legato.kazusa.ui.book.read.config
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import com.jaredrummler.android.colorpicker.ColorPickerDialog
import io.legato.kazusa.R
import io.legato.kazusa.base.BaseDialogFragment
import io.legato.kazusa.base.BaseBottomSheetDialogFragment
import io.legato.kazusa.constant.EventBus
import io.legato.kazusa.databinding.DialogTipConfigBinding
import io.legato.kazusa.help.config.ReadBookConfig
@@ -16,11 +15,10 @@ import io.legato.kazusa.utils.getIndexById
import io.legato.kazusa.utils.hexString
import io.legato.kazusa.utils.observeEvent
import io.legato.kazusa.utils.postEvent
import io.legato.kazusa.utils.setLayout
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
class TipConfigDialog : BaseDialogFragment(R.layout.dialog_tip_config) {
class TipConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_tip_config) {
companion object {
const val TIP_COLOR = 7897
@@ -31,7 +29,6 @@ class TipConfigDialog : BaseDialogFragment(R.layout.dialog_tip_config) {
override fun onStart() {
super.onStart()
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {