更新界面
This commit is contained in:
@@ -76,7 +76,7 @@ object BookCover {
|
||||
return
|
||||
}
|
||||
defaultDrawable = kotlin.runCatching {
|
||||
BitmapUtils.decodeBitmap(path, 600, 900).toDrawable(appCtx.resources)
|
||||
BitmapUtils.decodeBitmap(path, 600, 900)!!.toDrawable(appCtx.resources)
|
||||
}.getOrDefault(appCtx.resources.getDrawable(R.drawable.image_cover_default, null))
|
||||
}
|
||||
|
||||
@@ -158,6 +158,7 @@ object BookCover {
|
||||
}
|
||||
it
|
||||
}
|
||||
.transition(DrawableTransitionOptions.withCrossFade())
|
||||
}
|
||||
|
||||
fun preloadManga(
|
||||
|
||||
@@ -43,7 +43,6 @@ import io.legato.kazusa.ui.book.changesource.ChangeBookSourceDialog
|
||||
import io.legato.kazusa.ui.book.info.BookInfoActivity
|
||||
import io.legato.kazusa.ui.book.manga.config.MangaColorFilterConfig
|
||||
import io.legato.kazusa.ui.book.manga.config.MangaColorFilterDialog
|
||||
import io.legato.kazusa.ui.book.manga.config.MangaEpaperDialog
|
||||
import io.legato.kazusa.ui.book.manga.config.MangaFooterConfig
|
||||
import io.legato.kazusa.ui.book.manga.config.MangaFooterSettingDialog
|
||||
import io.legato.kazusa.ui.book.manga.entities.BaseMangaPage
|
||||
@@ -78,7 +77,7 @@ import kotlin.math.ceil
|
||||
|
||||
class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewModel>(),
|
||||
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack,
|
||||
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback, MangaEpaperDialog.Callback {
|
||||
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback, MangaFooterSettingDialog.Callback {
|
||||
|
||||
private val mLayoutManager by lazy {
|
||||
MangaLayoutManager(this)
|
||||
@@ -253,7 +252,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
|
||||
override fun upContent() {
|
||||
lifecycleScope.launch {
|
||||
setTitle(ReadManga.book?.name)
|
||||
binding.mangaMenu.upBookView()
|
||||
val data = withContext(IO) { ReadManga.mangaContents }
|
||||
val pos = data.pos
|
||||
val list = data.items
|
||||
@@ -450,7 +449,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
|
||||
override fun updateColorFilter(config: MangaColorFilterConfig) {
|
||||
mAdapter.setMangaImageColorFilter(config)
|
||||
updateWindowBrightness(config.l)
|
||||
if (config.autoBrightness) {
|
||||
resetWindowToSystemBrightness()
|
||||
} else {
|
||||
updateWindowBrightness(config.l)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("StringFormatMatches")
|
||||
@@ -473,12 +476,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
|
||||
R.id.menu_catalog -> {
|
||||
ReadManga.book?.let {
|
||||
tocActivity.launch(it.bookUrl)
|
||||
}
|
||||
}
|
||||
|
||||
R.id.menu_refresh -> {
|
||||
binding.flLoading.isVisible = true
|
||||
ReadManga.book?.let {
|
||||
@@ -510,35 +507,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
setDisableClickScroll(item.isChecked)
|
||||
}
|
||||
|
||||
R.id.menu_enable_auto_page -> {
|
||||
item.isChecked = !item.isChecked
|
||||
val menuMangaAutoPageSpeed = mMenu?.findItem(R.id.menu_manga_auto_page_speed)
|
||||
mScrollTimer.isEnabledPage = item.isChecked
|
||||
menuMangaAutoPageSpeed?.isVisible = item.isChecked
|
||||
enableAutoScrollPage = item.isChecked
|
||||
enableAutoScroll = false
|
||||
mScrollTimer.isEnabled = false
|
||||
mMenu?.findItem(R.id.menu_enable_auto_scroll)?.isChecked = false
|
||||
}
|
||||
|
||||
R.id.menu_manga_auto_page_speed -> {
|
||||
showNumberPickerDialog(
|
||||
1, getString(R.string.setting_manga_auto_page_speed),
|
||||
AppConfig.mangaAutoPageSpeed
|
||||
) {
|
||||
AppConfig.mangaAutoPageSpeed = it
|
||||
item.title = getString(R.string.manga_auto_page_speed, it)
|
||||
mScrollTimer.setSpeed(it)
|
||||
if (enableAutoScrollPage) {
|
||||
mScrollTimer.isEnabledPage = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
R.id.menu_manga_footer_config -> {
|
||||
showDialogFragment(MangaFooterSettingDialog())
|
||||
}
|
||||
|
||||
R.id.menu_enable_horizontal_scroll -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.enableMangaHorizontalScroll = item.isChecked
|
||||
@@ -555,11 +523,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
R.id.menu_enable_auto_scroll -> {
|
||||
item.isChecked = !item.isChecked
|
||||
mScrollTimer.isEnabled = item.isChecked
|
||||
mMenu?.findItem(R.id.menu_enable_auto_page)?.isChecked = false
|
||||
|
||||
enableAutoScroll = item.isChecked
|
||||
enableAutoScrollPage = false
|
||||
mScrollTimer.isEnabledPage = false
|
||||
mMenu?.findItem(R.id.menu_manga_auto_page_speed)?.isVisible = item.isChecked
|
||||
|
||||
if (enableAutoScroll) {
|
||||
mPagerSnapHelper.attachToRecyclerView(null)
|
||||
} else if (AppConfig.enableMangaHorizontalScroll) {
|
||||
@@ -573,18 +541,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
ReadManga.loadContent()
|
||||
}
|
||||
|
||||
R.id.menu_epaper_manga -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.enableMangaEInk = item.isChecked
|
||||
mMenu?.findItem(R.id.menu_gray_manga)?.isChecked = false
|
||||
AppConfig.enableMangaGray = false
|
||||
mMenu?.findItem(R.id.menu_epaper_manga_setting)?.isVisible = item.isChecked
|
||||
mAdapter.enableMangaEInk(item.isChecked, AppConfig.mangaEInkThreshold)
|
||||
}
|
||||
|
||||
R.id.menu_epaper_manga_setting -> {
|
||||
showDialogFragment(MangaEpaperDialog())
|
||||
}
|
||||
|
||||
R.id.menu_disable_horizontal_animation -> {
|
||||
item.isChecked = !item.isChecked
|
||||
@@ -596,18 +553,44 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
|
||||
R.id.menu_gray_manga -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.enableMangaGray = item.isChecked
|
||||
mMenu?.findItem(R.id.menu_epaper_manga)?.isChecked = false
|
||||
AppConfig.enableMangaEInk = false
|
||||
mMenu?.findItem(R.id.menu_epaper_manga_setting)?.isVisible = false
|
||||
mAdapter.enableGray(item.isChecked)
|
||||
}
|
||||
|
||||
}
|
||||
return super.onCompatOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun openCatalog() {
|
||||
ReadManga.book?.let {
|
||||
tocActivity.launch(it.bookUrl)
|
||||
}
|
||||
}
|
||||
|
||||
override fun showFooterConfig() {
|
||||
showDialogFragment(MangaFooterSettingDialog().apply {
|
||||
initialAutoPageEnabled = enableAutoScrollPage
|
||||
initialAutoPageSpeed = AppConfig.mangaAutoPageSpeed
|
||||
callback = this@ReadMangaActivity
|
||||
})
|
||||
}
|
||||
|
||||
override fun showColorFilterConfig() {
|
||||
binding.mangaMenu.runMenuOut()
|
||||
showDialogFragment(MangaColorFilterDialog())
|
||||
}
|
||||
|
||||
override fun updateEpaperMode(enabled: Boolean, threshold: Int) {
|
||||
AppConfig.enableMangaEInk = enabled
|
||||
AppConfig.enableMangaGray = false
|
||||
AppConfig.mangaEInkThreshold = threshold
|
||||
mAdapter.enableMangaEInk(enabled, threshold)
|
||||
}
|
||||
|
||||
override fun updateGrayMode(enabled: Boolean) {
|
||||
AppConfig.enableMangaGray = enabled
|
||||
AppConfig.enableMangaEInk = false
|
||||
mAdapter.enableGray(enabled)
|
||||
}
|
||||
|
||||
|
||||
override fun openBookInfoActivity() {
|
||||
ReadManga.book?.let {
|
||||
bookInfoActivity.launch {
|
||||
@@ -617,6 +600,26 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutoPageToggle(enabled: Boolean) {
|
||||
mScrollTimer.isEnabledPage = enabled
|
||||
mScrollTimer.isEnabled = false
|
||||
|
||||
enableAutoScrollPage = enabled
|
||||
enableAutoScroll = false
|
||||
|
||||
mMenu?.findItem(R.id.menu_enable_auto_scroll)?.isChecked = false
|
||||
}
|
||||
|
||||
override fun onAutoPageSpeedChanged(speed: Int) {
|
||||
AppConfig.mangaAutoPageSpeed = speed
|
||||
mScrollTimer.setSpeed(speed)
|
||||
|
||||
if (enableAutoScrollPage) {
|
||||
mScrollTimer.isEnabledPage = true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun upSystemUiVisibility(menuIsVisible: Boolean) {
|
||||
toggleSystemBar(menuIsVisible)
|
||||
if (enableAutoScroll) {
|
||||
@@ -680,19 +683,16 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
getString(R.string.pre_download_m, AppConfig.mangaPreDownloadNum)
|
||||
menu.findItem(R.id.menu_disable_manga_scale).isChecked = AppConfig.disableMangaScale
|
||||
menu.findItem(R.id.menu_disable_click_scroll).isChecked = AppConfig.disableClickScroll
|
||||
menu.findItem(R.id.menu_manga_auto_page_speed).title =
|
||||
getString(R.string.manga_auto_page_speed, AppConfig.mangaAutoPageSpeed)
|
||||
menu.findItem(R.id.menu_enable_horizontal_scroll).isChecked =
|
||||
AppConfig.enableMangaHorizontalScroll
|
||||
menu.findItem(R.id.menu_hide_manga_title).isChecked = AppConfig.hideMangaTitle
|
||||
menu.findItem(R.id.menu_epaper_manga).isChecked = AppConfig.enableMangaEInk
|
||||
menu.findItem(R.id.menu_epaper_manga_setting).isVisible = AppConfig.enableMangaEInk
|
||||
|
||||
menu.findItem(R.id.menu_disable_horizontal_animation).run {
|
||||
isVisible =
|
||||
AppConfig.enableMangaHorizontalScroll
|
||||
isChecked = AppConfig.disableHorizontalAnimator
|
||||
}
|
||||
menu.findItem(R.id.menu_gray_manga).isChecked = AppConfig.enableMangaGray
|
||||
|
||||
}
|
||||
|
||||
private fun setDisableMangaScale(disable: Boolean) {
|
||||
@@ -782,6 +782,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
}
|
||||
fun resetWindowToSystemBrightness() {
|
||||
val layoutParams = window.attributes
|
||||
layoutParams.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
|
||||
window.attributes = layoutParams
|
||||
}
|
||||
|
||||
fun updateWindowBrightness(brightness: Int) {
|
||||
val layoutParams = window.attributes
|
||||
@@ -832,7 +837,5 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
return super.onKeyDown(keyCode, event)
|
||||
}
|
||||
|
||||
override fun updateEepaper(value: Int) {
|
||||
mAdapter.updateThreshold(value)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,7 +7,8 @@ data class MangaColorFilterConfig(
|
||||
var g: Int = 0,
|
||||
var b: Int = 0,
|
||||
var a: Int = 0,
|
||||
var l: Int = 0
|
||||
var l: Int = 0,
|
||||
var autoBrightness: Boolean = true
|
||||
) {
|
||||
fun toJson(): String {
|
||||
if (r == 0 && g == 0 && b == 0 && a == 0 && l == 0) {
|
||||
|
||||
@@ -3,28 +3,32 @@ package io.legato.kazusa.ui.book.manga.config
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.core.view.isVisible
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.base.BaseDialogFragment
|
||||
import io.legato.kazusa.base.BaseBottomSheetDialogFragment
|
||||
import io.legato.kazusa.databinding.DialogMangaColorFilterBinding
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
import io.legato.kazusa.utils.GSON
|
||||
import io.legato.kazusa.utils.fromJsonObject
|
||||
import io.legato.kazusa.utils.setLayout
|
||||
import io.legato.kazusa.utils.invisible
|
||||
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
||||
import io.legato.kazusa.utils.visible
|
||||
|
||||
class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_filter) {
|
||||
class MangaColorFilterDialog : BaseBottomSheetDialogFragment(R.layout.dialog_manga_color_filter) {
|
||||
private val binding by viewBinding(DialogMangaColorFilterBinding::bind)
|
||||
private val mConfig =
|
||||
GSON.fromJsonObject<MangaColorFilterConfig>(AppConfig.mangaColorFilter).getOrNull()
|
||||
?: MangaColorFilterConfig()
|
||||
private val callback get() = activity as? Callback
|
||||
private val callback: Callback? get() = activity as? Callback
|
||||
|
||||
private var mMangaEInkThreshold = AppConfig.mangaEInkThreshold
|
||||
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
// setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
@@ -34,6 +38,17 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
||||
|
||||
private fun initData() {
|
||||
binding.run {
|
||||
chipAutoBrightness.isChecked = mConfig.autoBrightness
|
||||
|
||||
if (AppConfig.enableMangaEInk) dsbEpaper.visible()
|
||||
else dsbEpaper.invisible()
|
||||
|
||||
dsbEpaper.progress = mMangaEInkThreshold
|
||||
|
||||
cpEpaper.isChecked = AppConfig.enableMangaEInk
|
||||
cpEnableGray.isChecked = AppConfig.enableMangaGray
|
||||
|
||||
dsbBrightness.isEnabled = !mConfig.autoBrightness
|
||||
dsbBrightness.progress = mConfig.l
|
||||
dsbR.progress = mConfig.r
|
||||
dsbG.progress = mConfig.g
|
||||
@@ -44,6 +59,37 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
||||
|
||||
private fun initView() {
|
||||
binding.run {
|
||||
chipAutoBrightness.setOnCheckedChangeListener { _, isChecked ->
|
||||
mConfig.autoBrightness = isChecked
|
||||
dsbBrightness.isEnabled = !isChecked
|
||||
callback?.updateColorFilter(mConfig)
|
||||
}
|
||||
|
||||
cpEpaper.setOnCheckedChangeListener { _, isChecked ->
|
||||
binding.dsbEpaper.isVisible = isChecked
|
||||
if (isChecked) {
|
||||
cpEnableGray.isChecked = false
|
||||
callback?.updateGrayMode(false)
|
||||
dsbEpaper.visible()
|
||||
} else dsbEpaper.invisible()
|
||||
callback?.updateEpaperMode(isChecked, mMangaEInkThreshold)
|
||||
}
|
||||
|
||||
cpEnableGray.setOnCheckedChangeListener { _, isChecked ->
|
||||
if (isChecked) {
|
||||
binding.dsbEpaper.isVisible = false
|
||||
cpEpaper.isChecked = false
|
||||
callback?.updateEpaperMode(false, mMangaEInkThreshold)
|
||||
}
|
||||
dsbEpaper.invisible()
|
||||
callback?.updateGrayMode(isChecked)
|
||||
}
|
||||
|
||||
dsbEpaper.onChanged = {
|
||||
mMangaEInkThreshold = it
|
||||
callback?.updateEpaperMode(true, it)
|
||||
}
|
||||
|
||||
dsbBrightness.onChanged = {
|
||||
mConfig.l = it
|
||||
callback?.updateColorFilter(mConfig)
|
||||
@@ -70,10 +116,13 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
AppConfig.mangaColorFilter = mConfig.toJson()
|
||||
AppConfig.mangaEInkThreshold = mMangaEInkThreshold
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
fun updateColorFilter(config: MangaColorFilterConfig)
|
||||
fun updateEpaperMode(enabled: Boolean, threshold: Int)
|
||||
fun updateGrayMode(enabled: Boolean)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
package io.legato.kazusa.ui.book.manga.config
|
||||
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.base.BaseBottomSheetDialogFragment
|
||||
import io.legato.kazusa.databinding.DialogMangaEpaperBinding
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
|
||||
class MangaEpaperDialog : BaseBottomSheetDialogFragment(R.layout.dialog_manga_epaper) {
|
||||
private val binding by viewBinding(DialogMangaEpaperBinding::bind)
|
||||
private val callback get() = activity as? Callback
|
||||
private var mMangaEInkThreshold = 150
|
||||
|
||||
// override fun onStart() {
|
||||
// super.onStart()
|
||||
// dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
// }
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
initData()
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
binding.dsbEpaper.progress = AppConfig.mangaEInkThreshold
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
binding.dsbEpaper.onChanged = {
|
||||
mMangaEInkThreshold = it
|
||||
callback?.updateEepaper(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
AppConfig.mangaEInkThreshold = mMangaEInkThreshold
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
fun updateEepaper(value: Int)
|
||||
}
|
||||
|
||||
}
|
||||
+141
-54
@@ -3,9 +3,9 @@ package io.legato.kazusa.ui.book.manga.config
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.transition.TransitionManager
|
||||
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.DialogMangaFooterSettingBinding
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
@@ -13,100 +13,187 @@ import io.legato.kazusa.ui.widget.ReaderInfoBarView
|
||||
import io.legato.kazusa.utils.GSON
|
||||
import io.legato.kazusa.utils.fromJsonObject
|
||||
import io.legato.kazusa.utils.postEvent
|
||||
import io.legato.kazusa.utils.setLayout
|
||||
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
class MangaFooterSettingDialog : BaseDialogFragment(R.layout.dialog_manga_footer_setting) {
|
||||
class MangaFooterSettingDialog :
|
||||
BaseBottomSheetDialogFragment(R.layout.dialog_manga_footer_setting) {
|
||||
|
||||
val config = GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull()
|
||||
?: MangaFooterConfig()
|
||||
|
||||
var callback: Callback? = null
|
||||
|
||||
var initialAutoPageEnabled: Boolean = false
|
||||
var initialAutoPageSpeed: Int = 3
|
||||
|
||||
private val binding by viewBinding(DialogMangaFooterSettingBinding::bind)
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
||||
binding.cbChapterLabel.run {
|
||||
isChecked = config.hideChapterLabel
|
||||
isChecked = !config.hideChapterLabel
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hideChapterLabel = isChecked
|
||||
config.hideChapterLabel = !isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
updateChapterText()
|
||||
if (isChecked) binding.cbChapter.isChecked = true
|
||||
}
|
||||
}
|
||||
|
||||
binding.cbChapter.run {
|
||||
isChecked = config.hideChapter
|
||||
isChecked = !config.hideChapter
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hideChapter = isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
}
|
||||
}
|
||||
binding.cbPageNumberLabel.run {
|
||||
isChecked = config.hidePageNumberLabel
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hidePageNumberLabel = isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
}
|
||||
}
|
||||
binding.cbPageNumber.run {
|
||||
isChecked = config.hidePageNumber
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hidePageNumber = isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
}
|
||||
}
|
||||
binding.cbProgressRatioLabel.run {
|
||||
isChecked = config.hideProgressRatioLabel
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hideProgressRatioLabel = isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
}
|
||||
}
|
||||
binding.cbProgressRatio.run {
|
||||
isChecked = config.hideProgressRatio
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hideProgressRatio = isChecked
|
||||
config.hideChapter = !isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
updateChapterText()
|
||||
if (!isChecked) binding.cbChapterLabel.isChecked = false
|
||||
}
|
||||
}
|
||||
|
||||
binding.cbChapterName.run {
|
||||
isChecked = config.hideChapterName
|
||||
isChecked = !config.hideChapterName
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hideChapterName = isChecked
|
||||
config.hideChapterName = !isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
updateChapterText()
|
||||
}
|
||||
}
|
||||
binding.rgFooterOrientation.check(if (config.footerOrientation == ReaderInfoBarView.ALIGN_CENTER) R.id.rb_center else R.id.rb_left)
|
||||
binding.rgFooterOrientation.setOnCheckedChangeListener { _, checkedId ->
|
||||
when (checkedId) {
|
||||
|
||||
binding.cbPageNumberLabel.run {
|
||||
isChecked = !config.hidePageNumberLabel
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hidePageNumberLabel = !isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
updateChapterText()
|
||||
if (isChecked) binding.cbPageNumber.isChecked = true
|
||||
}
|
||||
}
|
||||
|
||||
binding.cbPageNumber.run {
|
||||
isChecked = !config.hidePageNumber
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hidePageNumber = !isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
updateChapterText()
|
||||
if (!isChecked) binding.cbPageNumberLabel.isChecked = false
|
||||
}
|
||||
}
|
||||
|
||||
binding.cbProgressRatioLabel.run {
|
||||
isChecked = !config.hideProgressRatioLabel
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hideProgressRatioLabel = !isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
updateChapterText()
|
||||
if (isChecked) binding.cbProgressRatio.isChecked = true
|
||||
}
|
||||
}
|
||||
|
||||
binding.cbProgressRatio.run {
|
||||
isChecked = !config.hideProgressRatio
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
config.hideProgressRatio = !isChecked
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
updateChapterText()
|
||||
if (!isChecked) binding.cbProgressRatioLabel.isChecked = false
|
||||
}
|
||||
}
|
||||
|
||||
binding.rgFooterOrientation.check(
|
||||
when {
|
||||
config.hideFooter -> R.id.rb_hide
|
||||
config.footerOrientation == ReaderInfoBarView.ALIGN_CENTER -> R.id.rb_center
|
||||
else -> R.id.rb_left
|
||||
}
|
||||
)
|
||||
|
||||
binding.rgFooterOrientation.setOnCheckedStateChangeListener { _, checkedIds ->
|
||||
when (checkedIds.firstOrNull()) {
|
||||
R.id.rb_left -> {
|
||||
config.hideFooter = false
|
||||
config.footerOrientation = ReaderInfoBarView.ALIGN_LEFT
|
||||
}
|
||||
|
||||
R.id.rb_center -> {
|
||||
config.hideFooter = false
|
||||
config.footerOrientation = ReaderInfoBarView.ALIGN_CENTER
|
||||
}
|
||||
}
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
}
|
||||
|
||||
binding.rgFooter.check(if (config.hideFooter) R.id.rb_hide else R.id.rb_show)
|
||||
binding.rgFooter.setOnCheckedChangeListener { _, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.rb_show -> {
|
||||
config.hideFooter = false
|
||||
}
|
||||
|
||||
R.id.rb_hide -> {
|
||||
config.hideFooter = true
|
||||
}
|
||||
}
|
||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||
}
|
||||
|
||||
|
||||
binding.chipAutoPage.run {
|
||||
isChecked = initialAutoPageEnabled
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onAutoPageToggle(isChecked)
|
||||
initAutoPageSpeed(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.btnColorFilter.setOnClickListener {
|
||||
callback?.showColorFilterConfig()
|
||||
dismiss()
|
||||
}
|
||||
|
||||
initAutoPageSpeed(initialAutoPageEnabled)
|
||||
|
||||
updateChapterText()
|
||||
}
|
||||
|
||||
private fun initAutoPageSpeed(boolean: Boolean) {
|
||||
TransitionManager.beginDelayedTransition(binding.rootView)
|
||||
binding.scvAutoPageSpeed.run {
|
||||
isEnabled = boolean
|
||||
valueFormat = { "$it 秒" }
|
||||
progress = initialAutoPageSpeed
|
||||
|
||||
onChanged = { newValue ->
|
||||
callback?.onAutoPageSpeedChanged(newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
AppConfig.mangaFooterConfig = GSON.toJson(config)
|
||||
}
|
||||
|
||||
private fun updateChapterText() {
|
||||
val label = if (!config.hideChapterLabel) "章节" else ""
|
||||
val chapter = if (!config.hideChapter) "1/45 " else ""
|
||||
val name = if (!config.hideChapterName) "第三话 " else ""
|
||||
|
||||
val progressLabel = if (!config.hideProgressRatioLabel) "总进度" else ""
|
||||
val progress = if (!config.hideProgressRatio) "2.1%" else ""
|
||||
|
||||
val pageLabel = if (!config.hidePageNumberLabel) "页数" else ""
|
||||
val page = if (!config.hidePageNumber) "4/30 " else ""
|
||||
|
||||
val parts = listOf(
|
||||
name,
|
||||
pageLabel,
|
||||
page,
|
||||
label,
|
||||
chapter,
|
||||
progressLabel,
|
||||
progress
|
||||
).filter { it.isNotEmpty() }
|
||||
TransitionManager.beginDelayedTransition(binding.rootView)
|
||||
binding.tvChapter.text = parts.joinToString(" ")
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
fun onAutoPageToggle(enable: Boolean)
|
||||
fun onAutoPageSpeedChanged(speed: Int)
|
||||
fun showColorFilterConfig()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,9 +22,8 @@ class EpaperTransformation(
|
||||
@IntRange(0, 255) private val threshold: Int = 128,
|
||||
) : BitmapTransformation() {
|
||||
|
||||
private val ID =
|
||||
"io.legado.app.model.EpaperTransformation.${threshold}"
|
||||
private val ID_BYTES = ID.toByteArray(CHARSET)
|
||||
private val ID get() = "io.legado.app.model.EpaperTransformation.$threshold"
|
||||
private val ID_BYTES get() = ID.toByteArray(CHARSET)
|
||||
|
||||
override fun transform(
|
||||
pool: BitmapPool,
|
||||
|
||||
@@ -253,21 +253,13 @@ class MangaAdapter(private val context: Context) :
|
||||
fun enableMangaEInk(enable: Boolean, value: Int) {
|
||||
if (enable) {
|
||||
currentMangaEInkThreshold = value
|
||||
mTransformation = EpaperTransformation(currentMangaEInkThreshold)
|
||||
mTransformation = EpaperTransformation(value)
|
||||
} else {
|
||||
mTransformation = null
|
||||
}
|
||||
notifyItemRangeChanged(0, itemCount)
|
||||
}
|
||||
|
||||
fun updateThreshold(mangaEInkThreshold: Int) {
|
||||
if (currentMangaEInkThreshold != mangaEInkThreshold) {
|
||||
currentMangaEInkThreshold = mangaEInkThreshold
|
||||
mTransformation = EpaperTransformation(currentMangaEInkThreshold)
|
||||
notifyItemRangeChanged(0, itemCount)
|
||||
}
|
||||
}
|
||||
|
||||
//开启灰色图片
|
||||
fun enableGray(enable: Boolean) {
|
||||
mTransformation = if (enable) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package io.legato.kazusa.ui.book.read
|
||||
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.animation.Animation
|
||||
@@ -15,14 +15,12 @@ import io.legato.kazusa.databinding.ViewMangaMenuBinding
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
import io.legato.kazusa.help.source.getSourceType
|
||||
import io.legato.kazusa.lib.dialogs.alert
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legato.kazusa.model.ReadBook
|
||||
import io.legato.kazusa.model.ReadManga
|
||||
import io.legato.kazusa.ui.browser.WebViewActivity
|
||||
import io.legato.kazusa.utils.ConstraintModify
|
||||
import io.legato.kazusa.utils.activity
|
||||
import io.legato.kazusa.utils.applyNavigationBarPadding
|
||||
import io.legato.kazusa.utils.dpToPx
|
||||
import io.legato.kazusa.utils.gone
|
||||
import io.legato.kazusa.utils.invisible
|
||||
import io.legato.kazusa.utils.loadAnimation
|
||||
@@ -95,15 +93,15 @@ class MangaMenu @JvmOverloads constructor(
|
||||
|
||||
private fun initView() = binding.run {
|
||||
initAnimation()
|
||||
val brightnessBackground = GradientDrawable()
|
||||
brightnessBackground.cornerRadius = 5F.dpToPx()
|
||||
//brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
||||
if (AppConfig.isEInkMode) {
|
||||
titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
bottomMenu.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
} else {
|
||||
//bottomMenu.setBackgroundColor(bgColor)
|
||||
}
|
||||
// val brightnessBackground = GradientDrawable()
|
||||
// brightnessBackground.cornerRadius = 5F.dpToPx()
|
||||
// //brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
||||
// if (AppConfig.isEInkMode) {
|
||||
// titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
// bottomMenu.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
// } else {
|
||||
// //bottomMenu.setBackgroundColor(bgColor)
|
||||
// }
|
||||
if (AppConfig.showReadTitleBarAddition) {
|
||||
titleBarAddition.visible()
|
||||
} else {
|
||||
@@ -113,7 +111,7 @@ class MangaMenu @JvmOverloads constructor(
|
||||
/**
|
||||
* 确保视图不被导航栏遮挡
|
||||
*/
|
||||
bottomMenu.applyNavigationBarPadding()
|
||||
bottomView.applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
private fun upBrightnessVwPos() {
|
||||
@@ -163,6 +161,18 @@ class MangaMenu @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun upBookView() {
|
||||
binding.titleBar.title = " "
|
||||
binding.tvBookName.text = ReadManga.book?.name
|
||||
ReadManga.curMangaChapter?.let {
|
||||
binding.tvChapterName.text = ReadManga.book?.durChapterTitle
|
||||
binding.tvPre.isEnabled = ReadManga.durChapterIndex != 0
|
||||
binding.tvNext.isEnabled =
|
||||
ReadManga.durChapterIndex != ReadManga.simulatedChapterSize - 1
|
||||
} ?: let {
|
||||
binding.tvChapterUrl.gone()
|
||||
}
|
||||
}
|
||||
|
||||
private fun bindEvent() = binding.run {
|
||||
vwMenuBg.setOnClickListener { runMenuOut() }
|
||||
@@ -224,14 +234,26 @@ class MangaMenu @JvmOverloads constructor(
|
||||
}
|
||||
})
|
||||
|
||||
ivCatalog.setOnClickListener {
|
||||
callBack.openCatalog()
|
||||
}
|
||||
|
||||
ivSetting.setOnClickListener {
|
||||
callBack.showFooterConfig()
|
||||
}
|
||||
|
||||
btnAutoPage.setOnClickListener {
|
||||
callBack.showFooterConfig()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun upSeekBar(value: Int, count: Int) {
|
||||
binding.seekReadPage.apply {
|
||||
valueFrom = 1f
|
||||
valueTo = (count).toFloat()
|
||||
this.value = value.toFloat().coerceIn(1f,valueFrom)
|
||||
valueTo = count.toFloat()
|
||||
stepSize = 1f
|
||||
this.value = value.toFloat().coerceIn(valueFrom, valueTo)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,6 +261,8 @@ class MangaMenu @JvmOverloads constructor(
|
||||
fun openBookInfoActivity()
|
||||
fun upSystemUiVisibility(menuIsVisible: Boolean)
|
||||
fun skipToPage(index: Int)
|
||||
fun openCatalog()
|
||||
fun showFooterConfig()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -143,8 +143,6 @@ class SimpleCounterView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private fun updateValue() {
|
||||
binding.tvSeekValue.text = valueFormat?.invoke(_progress) ?: _progress.toString()
|
||||
}
|
||||
@@ -185,4 +183,12 @@ class SimpleCounterView @JvmOverloads constructor(
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
|
||||
override fun setEnabled(enabled: Boolean) {
|
||||
super.setEnabled(enabled)
|
||||
binding.tvSeekTitle.isEnabled = enabled
|
||||
binding.ivSeekPlus.isEnabled = enabled
|
||||
binding.ivSeekReduce.isEnabled = enabled
|
||||
binding.tvSeekValue.isEnabled = enabled
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:interpolator="@android:interpolator/decelerate_cubic">
|
||||
<translate
|
||||
android:fromYDelta="100%"
|
||||
android:duration="240"
|
||||
android:toYDelta="0%"
|
||||
android:duration="280"/>
|
||||
android:fromYDelta="8%" />
|
||||
<alpha
|
||||
android:fromAlpha="0.0"
|
||||
android:toAlpha="1.0"
|
||||
android:duration="280"/>
|
||||
android:duration="240" />
|
||||
</set>
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:interpolator="@android:interpolator/decelerate_cubic">
|
||||
<translate
|
||||
android:fromYDelta="0%"
|
||||
android:toYDelta="100%"
|
||||
android:duration="280"/>
|
||||
<alpha
|
||||
android:fromAlpha="1.0"
|
||||
android:toAlpha="0.0"
|
||||
android:duration="280"/>
|
||||
android:duration="240" />
|
||||
</set>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M80,520L80,440L880,440L880,520L80,520ZM280,400L280,280L680,280L680,400L280,400ZM280,680L280,560L680,560L680,680L280,680Z" />
|
||||
</vector>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M80,880L80,80L160,80L160,880L80,880ZM520,680L520,280L640,280L640,680L520,680ZM280,680L280,280L400,280L400,680L280,680Z" />
|
||||
</vector>
|
||||
@@ -3,54 +3,147 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="16dp">
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="8dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<io.legato.kazusa.ui.widget.text.AccentTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/manga_color_filter"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
||||
android:id="@+id/dsb_brightness"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="@string/brightness" />
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="8dp">
|
||||
|
||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
||||
android:id="@+id/dsb_r"
|
||||
<View
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="4dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:background="@drawable/bg_bottom_sheet_handle" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottom_sheet_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/manga_color_filter"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="R" />
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
||||
android:id="@+id/dsb_g"
|
||||
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||
android:id="@+id/dsb_brightness"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="@string/brightness" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/chip_autoBrightness"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="跟随系统" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="G" />
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
||||
android:id="@+id/dsb_b"
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cp_epaper"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/manga_epaper" />
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cp_enableGray"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="灰度" />
|
||||
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||
android:id="@+id/dsbEpaper"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="阈值" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="B" />
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
||||
android:id="@+id/dsb_a"
|
||||
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||
android:id="@+id/dsb_r"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="R" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||
android:id="@+id/dsb_g"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="G" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="A" />
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||
android:id="@+id/dsb_b"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="B" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||
android:id="@+id/dsb_a"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="255"
|
||||
app:title="A" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -2,168 +2,202 @@
|
||||
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="16dp">
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="8dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/root_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<io.legato.kazusa.ui.widget.text.AccentTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/manga_footer_config"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/manga_header_chapter"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp">
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="8dp">
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_chapter_label"
|
||||
<View
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="4dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:background="@drawable/bg_bottom_sheet_handle" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottom_sheet_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_check_chapter_label" />
|
||||
android:text="漫画设置"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_chapter"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_check_chapter" />
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_chapter_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_check_chapter_name" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/manga_header_page"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp">
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/footer"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:id="@+id/rg_footer_orientation"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:selectionRequired="true"
|
||||
app:singleSelection="true">
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/rb_left"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:layout_width="34dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:chipIcon="@drawable/ic_align_left"
|
||||
app:chipIconEnabled="true" />
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/rb_center"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:layout_width="34dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:chipIcon="@drawable/ic_align_center"
|
||||
app:chipIconEnabled="true" />
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/rb_hide"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:layout_width="34dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:chipIcon="@drawable/ic_visibility_off"
|
||||
app:chipIconEnabled="true" />
|
||||
</com.google.android.material.chip.ChipGroup>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="8dp"
|
||||
app:cardBackgroundColor="?attr/colorSurfaceVariant"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:strokeWidth="0dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_chapter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp" />
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cb_chapter_name"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="第三话" />
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cb_page_number_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:text="@string/manga_check_page_label" />
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cb_page_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_check_page_number" />
|
||||
</LinearLayout>
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:text="4/30" />
|
||||
|
||||
<TextView
|
||||
</com.google.android.material.chip.ChipGroup>
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/manga_header_progress"
|
||||
android:textSize="14sp" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp">
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cb_chapter_label"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/manga_check_chapter_label" />
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cb_chapter"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="1 / 45" />
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cb_progress_ratio_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:text="@string/manga_check_progress_label" />
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/cb_progress_ratio"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_check_progress" />
|
||||
style="@style/Widget.Material3.Chip.Suggestion"
|
||||
android:text="2.1%" />
|
||||
</com.google.android.material.chip.ChipGroup>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/chip_autoPage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/enable_auto_page_scroll" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||
android:id="@+id/scv_autoPageSpeed"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:max="100"
|
||||
app:title="翻页速度" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_color_filter"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/manga_header_footer"
|
||||
android:textSize="14sp" />
|
||||
android:text="@string/manga_color_filter" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/rg_footer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeRadioButton
|
||||
android:id="@+id/rb_show"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/show" />
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeRadioButton
|
||||
android:id="@+id/rb_hide"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/hide" />
|
||||
</RadioGroup>
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/rg_footer_orientation"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeRadioButton
|
||||
android:id="@+id/rb_left"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_radio_left" />
|
||||
|
||||
<io.legato.kazusa.lib.theme.view.ThemeRadioButton
|
||||
android:id="@+id/rb_center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/manga_radio_center" />
|
||||
</RadioGroup>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:padding="5dp"
|
||||
android:padding="8dp"
|
||||
android:maxLines="1"
|
||||
android:scrollbars="none"
|
||||
android:textSize="14sp"
|
||||
|
||||
@@ -19,64 +19,60 @@
|
||||
android:id="@+id/title_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="?attr/actionBarStyle"
|
||||
android:alpha="0.92"
|
||||
android:background="?attr/colorSurfaceContainer"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/title_bar_addition"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_chapter_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:singleLine="true"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toLeftOf="@+id/tv_source_action"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_chapter_url"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:singleLine="true"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toLeftOf="@+id/tv_source_action"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_chapter_name"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<io.legato.kazusa.ui.widget.text.AccentBgTextView
|
||||
android:id="@+id/tv_source_action"
|
||||
android:id="@+id/tv_book_name"
|
||||
style="@style/TextAppearance.Material3.TitleLarge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_margin="1dp"
|
||||
android:gravity="center"
|
||||
android:maxWidth="120dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:text="@string/book_source"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_chapter_url"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:radius="2dp"
|
||||
tools:visibility="visible" />
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/title_bar_addition"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_chapter_name"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:singleLine="true" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_chapter_url"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_source_action"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="8dp"
|
||||
android:text="@string/book_source" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</io.legato.kazusa.ui.widget.TitleBar>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_menu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.92"
|
||||
android:importantForAccessibility="no"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
@@ -84,10 +80,8 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginVertical="8dp"
|
||||
android:importantForAccessibility="no"
|
||||
android:orientation="horizontal">
|
||||
|
||||
@@ -99,12 +93,20 @@
|
||||
app:icon="@drawable/ic_previous"
|
||||
tools:ignore="TouchTargetSizeCheck" />
|
||||
|
||||
<com.google.android.material.slider.Slider
|
||||
android:id="@+id/seek_read_page"
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="1" />
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
app:cardBackgroundColor="?attr/colorSurfaceContainer"
|
||||
app:cardCornerRadius="32dp"
|
||||
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
|
||||
android:id="@+id/tv_next"
|
||||
@@ -114,6 +116,69 @@
|
||||
app:icon="@drawable/ic_next"
|
||||
tools:ignore="TouchTargetSizeCheck" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorSurfaceContainer"
|
||||
android:importantForAccessibility="no"
|
||||
android:orientation="horizontal"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="8dp">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/iv_catalog"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:contentDescription="@string/chapter_list"
|
||||
android:maxHeight="24dp"
|
||||
android:tooltipText="@string/chapter_list"
|
||||
app:icon="@drawable/ic_toc"
|
||||
app:iconGravity="textStart"
|
||||
tools:ignore="NestedWeights" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:importantForAccessibility="no" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_autoPage"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:contentDescription="@string/auto_next_page"
|
||||
android:tooltipText="@string/auto_next_page"
|
||||
app:icon="@drawable/ic_auto_page"
|
||||
app:iconGravity="textStart"
|
||||
tools:ignore="UnusedAttribute" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:importantForAccessibility="no" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/iv_setting"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:contentDescription="@string/setting"
|
||||
android:maxHeight="24dp"
|
||||
android:tooltipText="@string/setting"
|
||||
app:icon="@drawable/ic_settings"
|
||||
app:iconGravity="textStart"
|
||||
tools:ignore="NestedWeights" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -66,9 +66,6 @@
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
</io.legato.kazusa.ui.widget.TitleBar>
|
||||
|
||||
<LinearLayout
|
||||
|
||||
@@ -17,12 +17,6 @@
|
||||
android:title="@string/refresh"
|
||||
app:showAsAction="always" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_catalog"
|
||||
android:icon="@drawable/ic_toc"
|
||||
android:title="@string/chapter_list"
|
||||
app:showAsAction="always" />
|
||||
|
||||
</group>
|
||||
|
||||
<item
|
||||
@@ -44,13 +38,6 @@
|
||||
android:title="@string/disable_manga_click_scroll"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_enable_auto_page"
|
||||
android:checkable="true"
|
||||
android:checked="false"
|
||||
android:title="@string/enable_auto_page_scroll"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_enable_auto_scroll"
|
||||
android:checkable="true"
|
||||
@@ -58,12 +45,6 @@
|
||||
android:title="@string/enable_auto_scroll"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_manga_auto_page_speed"
|
||||
android:title="@string/manga_auto_page_speed"
|
||||
android:visible="false"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_enable_horizontal_scroll"
|
||||
android:checkable="true"
|
||||
@@ -79,11 +60,6 @@
|
||||
android:visible="false"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_manga_footer_config"
|
||||
android:title="@string/manga_footer_config"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_manga_color_filter"
|
||||
android:title="@string/manga_color_filter"
|
||||
@@ -96,24 +72,4 @@
|
||||
android:title="@string/hide_manga_title"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_epaper_manga"
|
||||
android:checkable="true"
|
||||
android:checked="false"
|
||||
android:title="@string/manga_epaper"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_epaper_manga_setting"
|
||||
android:title="@string/manga_epaper_stting"
|
||||
android:visible="false"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_gray_manga"
|
||||
android:checkable="true"
|
||||
android:checked="false"
|
||||
android:title="@string/enable_manga_gray"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
|
||||
@@ -1200,15 +1200,15 @@
|
||||
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
|
||||
<string name="menu_download_after">下载之后章节</string>
|
||||
<string name="menu_download_all">下载全部章节</string>
|
||||
<string name="manga_header_chapter">《章节和文案》隐藏</string>
|
||||
<string name="manga_check_chapter_label">《章节.》文案</string>
|
||||
<string name="manga_header_chapter">章节显示设置</string>
|
||||
<string name="manga_check_chapter_label">章节</string>
|
||||
<string name="manga_check_chapter">章节</string>
|
||||
<string name="manga_check_chapter_name">章节名称</string>
|
||||
<string name="manga_header_page">《页数和文案》隐藏</string>
|
||||
<string name="manga_check_page_label">《页数.》文案</string>
|
||||
<string name="manga_check_page_label">页数</string>
|
||||
<string name="manga_check_page_number">页数</string>
|
||||
<string name="manga_header_progress">《总进度和文案》隐藏</string>
|
||||
<string name="manga_check_progress_label">《总进度.》文案</string>
|
||||
<string name="manga_check_progress_label">总进度</string>
|
||||
<string name="manga_check_progress">总进度</string>
|
||||
<string name="manga_header_footer">页脚</string>
|
||||
<string name="manga_radio_left">靠左</string>
|
||||
|
||||
Reference in New Issue
Block a user