更新界面
This commit is contained in:
@@ -141,6 +141,9 @@ abstract class BaseActivity<VB : ViewBinding>(
|
||||
"1" -> setTheme(R.style.Theme_Base_GR)
|
||||
"2" -> setTheme(R.style.Theme_Base_Lemon)
|
||||
"3" -> setTheme(R.style.Theme_Base_WH)
|
||||
"4" -> setTheme(R.style.Theme_Base_Koharu)
|
||||
"5" -> setTheme(R.style.Theme_Base_Yuuka)
|
||||
"6" -> setTheme(R.style.Theme_Base_Phoebe)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -92,6 +92,9 @@ class ThemeCardPreference(context: Context, attrs: AttributeSet) : Preference(co
|
||||
"1" to R.style.Theme_Base_GR,
|
||||
"2" to R.style.Theme_Base_Lemon,
|
||||
"3" to R.style.Theme_Base_WH,
|
||||
"4" to R.style.Theme_Base_Koharu,
|
||||
"5" to R.style.Theme_Base_Yuuka,
|
||||
"6" to R.style.Theme_Base_Phoebe
|
||||
)
|
||||
|
||||
private fun getThemeColors(value: String): List<Int> {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
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
|
||||
@@ -16,17 +17,17 @@ import io.legato.kazusa.databinding.ItemReadStyleBinding
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
import io.legato.kazusa.help.config.ReadBookConfig
|
||||
import io.legato.kazusa.lib.dialogs.selector
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
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
|
||||
|
||||
class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_style),
|
||||
FontSelectDialog.CallBack {
|
||||
@@ -35,6 +36,9 @@ 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 onStart() {
|
||||
super.onStart()
|
||||
// dialog?.window?.run {
|
||||
@@ -154,6 +158,23 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_
|
||||
upView()
|
||||
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))
|
||||
@@ -172,6 +193,27 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_
|
||||
}
|
||||
}
|
||||
|
||||
private fun setOnlyActiveSeekBarVisible(activeSeekBar: DetailSeekBar, visible: Boolean) {
|
||||
if (visible == true) {
|
||||
TransitionManager.beginDelayedTransition(binding.setBar)
|
||||
TransitionManager.beginDelayedTransition(binding.setBottomBar)
|
||||
binding.setBar.visibility = View.GONE
|
||||
binding.setBottomBar.visibility = View.GONE
|
||||
}else{
|
||||
TransitionManager.beginDelayedTransition(binding.setBar)
|
||||
TransitionManager.beginDelayedTransition(binding.setBottomBar)
|
||||
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) {
|
||||
|
||||
@@ -24,7 +24,9 @@ class DetailSeekBar @JvmOverloads constructor(
|
||||
private val isBottomBackground: Boolean
|
||||
|
||||
var valueFormat: ((progress: Int) -> String)? = null
|
||||
var onStartTracking: (() -> Unit)? = null
|
||||
var onChanged: ((progress: Int) -> Unit)? = null
|
||||
var onStopTracking: (() -> Unit)? = null
|
||||
|
||||
var progress: Int
|
||||
get() = binding.slider.value.toInt()
|
||||
@@ -50,14 +52,6 @@ class DetailSeekBar @JvmOverloads constructor(
|
||||
}
|
||||
binding.slider.valueTo = typedArray.getInteger(R.styleable.DetailSeekBar_max, 0).toFloat()
|
||||
typedArray.recycle()
|
||||
if (isBottomBackground && !isInEditMode) {
|
||||
// val isLight = ColorUtils.isColorLight(context.bottomBackground)
|
||||
// val textColor = context.getPrimaryTextColor(isLight)
|
||||
// binding.tvSeekTitle.setTextColor(textColor)
|
||||
// binding.ivSeekPlus.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// binding.ivSeekReduce.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// binding.tvSeekValue.setTextColor(textColor)
|
||||
}
|
||||
binding.ivSeekPlus.setOnClickListener {
|
||||
val newValue = (binding.slider.value + 1).coerceAtMost(binding.slider.valueTo)
|
||||
binding.slider.value = newValue
|
||||
@@ -72,14 +66,19 @@ class DetailSeekBar @JvmOverloads constructor(
|
||||
|
||||
binding.slider.addOnChangeListener { _, value, fromUser ->
|
||||
upValue(value.toInt())
|
||||
|
||||
if (fromUser) {
|
||||
onChanged?.invoke(value.toInt())
|
||||
}
|
||||
}
|
||||
|
||||
binding.slider.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
// 可以添加开始拖动时的逻辑
|
||||
onStartTracking?.invoke()
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
onStopTracking?.invoke()
|
||||
onChanged?.invoke(slider.value.toInt())
|
||||
}
|
||||
})
|
||||
|
||||
@@ -9,19 +9,20 @@ import io.legato.kazusa.lib.theme.Selector
|
||||
import io.legato.kazusa.utils.ColorUtils
|
||||
import io.legato.kazusa.utils.dpToPx
|
||||
import androidx.core.content.withStyledAttributes
|
||||
import io.legato.kazusa.utils.themeColor
|
||||
|
||||
class AccentBgTextView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null
|
||||
) : MaterialTextView(context, attrs) {
|
||||
|
||||
private var radiusPx = 0
|
||||
private var radiusPx = 32
|
||||
|
||||
init {
|
||||
context.withStyledAttributes(attrs, R.styleable.AccentBgTextView) {
|
||||
val radiusDp = getDimensionPixelOffset(R.styleable.AccentBgTextView_radius, 0)
|
||||
radiusPx = radiusDp
|
||||
}
|
||||
// context.withStyledAttributes(attrs, R.styleable.AccentBgTextView) {
|
||||
// val radiusDp = getDimensionPixelOffset(R.styleable.AccentBgTextView_radius, 0)
|
||||
// radiusPx = radiusDp
|
||||
// }
|
||||
updateBackground()
|
||||
}
|
||||
|
||||
@@ -31,16 +32,8 @@ class AccentBgTextView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private fun updateBackground() {
|
||||
val backgroundColor = MaterialColors.getColor(
|
||||
this,
|
||||
com.google.android.material.R.attr.colorPrimaryContainer,
|
||||
//context.getColorCompat(R.color.fallback_bg)
|
||||
)
|
||||
val textColor = MaterialColors.getColor(
|
||||
this,
|
||||
com.google.android.material.R.attr.colorOnPrimaryContainer,
|
||||
//context.getColorCompat(R.color.fallback_text)
|
||||
)
|
||||
val backgroundColor = context.themeColor(com.google.android.material.R.attr.colorPrimaryContainer)
|
||||
val textColor = context.themeColor(com.google.android.material.R.attr.colorOnPrimaryContainer)
|
||||
|
||||
background = Selector.shapeBuild()
|
||||
.setCornerRadius(radiusPx)
|
||||
|
||||
Reference in New Issue
Block a user