更新界面
This commit is contained in:
1 parent
06dd2ac2c1
commit
c35177715c
21 files changed
+745
-469
No files matched your search
@@ -76,7 +76,7 @@ object BookCover {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
defaultDrawable = kotlin.runCatching {
|
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))
|
}.getOrDefault(appCtx.resources.getDrawable(R.drawable.image_cover_default, null))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,6 +158,7 @@ object BookCover {
|
|||||||
}
|
}
|
||||||
it
|
it
|
||||||
}
|
}
|
||||||
|
.transition(DrawableTransitionOptions.withCrossFade())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun preloadManga(
|
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.info.BookInfoActivity
|
||||||
import io.legato.kazusa.ui.book.manga.config.MangaColorFilterConfig
|
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.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.MangaFooterConfig
|
||||||
import io.legato.kazusa.ui.book.manga.config.MangaFooterSettingDialog
|
import io.legato.kazusa.ui.book.manga.config.MangaFooterSettingDialog
|
||||||
import io.legato.kazusa.ui.book.manga.entities.BaseMangaPage
|
import io.legato.kazusa.ui.book.manga.entities.BaseMangaPage
|
||||||
@@ -78,7 +77,7 @@ import kotlin.math.ceil
|
|||||||
|
|
||||||
class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewModel>(),
|
class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewModel>(),
|
||||||
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack,
|
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack,
|
||||||
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback, MangaEpaperDialog.Callback {
|
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback, MangaFooterSettingDialog.Callback {
|
||||||
|
|
||||||
private val mLayoutManager by lazy {
|
private val mLayoutManager by lazy {
|
||||||
MangaLayoutManager(this)
|
MangaLayoutManager(this)
|
||||||
@@ -253,7 +252,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
|
|
||||||
override fun upContent() {
|
override fun upContent() {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
setTitle(ReadManga.book?.name)
|
binding.mangaMenu.upBookView()
|
||||||
val data = withContext(IO) { ReadManga.mangaContents }
|
val data = withContext(IO) { ReadManga.mangaContents }
|
||||||
val pos = data.pos
|
val pos = data.pos
|
||||||
val list = data.items
|
val list = data.items
|
||||||
@@ -450,7 +449,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
|
|
||||||
override fun updateColorFilter(config: MangaColorFilterConfig) {
|
override fun updateColorFilter(config: MangaColorFilterConfig) {
|
||||||
mAdapter.setMangaImageColorFilter(config)
|
mAdapter.setMangaImageColorFilter(config)
|
||||||
updateWindowBrightness(config.l)
|
if (config.autoBrightness) {
|
||||||
|
resetWindowToSystemBrightness()
|
||||||
|
} else {
|
||||||
|
updateWindowBrightness(config.l)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("StringFormatMatches")
|
@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 -> {
|
R.id.menu_refresh -> {
|
||||||
binding.flLoading.isVisible = true
|
binding.flLoading.isVisible = true
|
||||||
ReadManga.book?.let {
|
ReadManga.book?.let {
|
||||||
@@ -510,35 +507,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
setDisableClickScroll(item.isChecked)
|
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 -> {
|
R.id.menu_enable_horizontal_scroll -> {
|
||||||
item.isChecked = !item.isChecked
|
item.isChecked = !item.isChecked
|
||||||
AppConfig.enableMangaHorizontalScroll = item.isChecked
|
AppConfig.enableMangaHorizontalScroll = item.isChecked
|
||||||
@@ -555,11 +523,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
R.id.menu_enable_auto_scroll -> {
|
R.id.menu_enable_auto_scroll -> {
|
||||||
item.isChecked = !item.isChecked
|
item.isChecked = !item.isChecked
|
||||||
mScrollTimer.isEnabled = item.isChecked
|
mScrollTimer.isEnabled = item.isChecked
|
||||||
mMenu?.findItem(R.id.menu_enable_auto_page)?.isChecked = false
|
|
||||||
enableAutoScroll = item.isChecked
|
enableAutoScroll = item.isChecked
|
||||||
enableAutoScrollPage = false
|
enableAutoScrollPage = false
|
||||||
mScrollTimer.isEnabledPage = false
|
mScrollTimer.isEnabledPage = false
|
||||||
mMenu?.findItem(R.id.menu_manga_auto_page_speed)?.isVisible = item.isChecked
|
|
||||||
if (enableAutoScroll) {
|
if (enableAutoScroll) {
|
||||||
mPagerSnapHelper.attachToRecyclerView(null)
|
mPagerSnapHelper.attachToRecyclerView(null)
|
||||||
} else if (AppConfig.enableMangaHorizontalScroll) {
|
} else if (AppConfig.enableMangaHorizontalScroll) {
|
||||||
@@ -573,18 +541,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
ReadManga.loadContent()
|
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 -> {
|
R.id.menu_disable_horizontal_animation -> {
|
||||||
item.isChecked = !item.isChecked
|
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)
|
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() {
|
override fun openBookInfoActivity() {
|
||||||
ReadManga.book?.let {
|
ReadManga.book?.let {
|
||||||
bookInfoActivity.launch {
|
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) {
|
override fun upSystemUiVisibility(menuIsVisible: Boolean) {
|
||||||
toggleSystemBar(menuIsVisible)
|
toggleSystemBar(menuIsVisible)
|
||||||
if (enableAutoScroll) {
|
if (enableAutoScroll) {
|
||||||
@@ -680,19 +683,16 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
getString(R.string.pre_download_m, AppConfig.mangaPreDownloadNum)
|
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_manga_scale).isChecked = AppConfig.disableMangaScale
|
||||||
menu.findItem(R.id.menu_disable_click_scroll).isChecked = AppConfig.disableClickScroll
|
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 =
|
menu.findItem(R.id.menu_enable_horizontal_scroll).isChecked =
|
||||||
AppConfig.enableMangaHorizontalScroll
|
AppConfig.enableMangaHorizontalScroll
|
||||||
menu.findItem(R.id.menu_hide_manga_title).isChecked = AppConfig.hideMangaTitle
|
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 {
|
menu.findItem(R.id.menu_disable_horizontal_animation).run {
|
||||||
isVisible =
|
isVisible =
|
||||||
AppConfig.enableMangaHorizontalScroll
|
AppConfig.enableMangaHorizontalScroll
|
||||||
isChecked = AppConfig.disableHorizontalAnimator
|
isChecked = AppConfig.disableHorizontalAnimator
|
||||||
}
|
}
|
||||||
menu.findItem(R.id.menu_gray_manga).isChecked = AppConfig.enableMangaGray
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setDisableMangaScale(disable: Boolean) {
|
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) {
|
fun updateWindowBrightness(brightness: Int) {
|
||||||
val layoutParams = window.attributes
|
val layoutParams = window.attributes
|
||||||
@@ -832,7 +837,5 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
return super.onKeyDown(keyCode, event)
|
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 g: Int = 0,
|
||||||
var b: Int = 0,
|
var b: Int = 0,
|
||||||
var a: Int = 0,
|
var a: Int = 0,
|
||||||
var l: Int = 0
|
var l: Int = 0,
|
||||||
|
var autoBrightness: Boolean = true
|
||||||
) {
|
) {
|
||||||
fun toJson(): String {
|
fun toJson(): String {
|
||||||
if (r == 0 && g == 0 && b == 0 && a == 0 && l == 0) {
|
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.content.DialogInterface
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import io.legato.kazusa.R
|
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.databinding.DialogMangaColorFilterBinding
|
||||||
import io.legato.kazusa.help.config.AppConfig
|
import io.legato.kazusa.help.config.AppConfig
|
||||||
import io.legato.kazusa.utils.GSON
|
import io.legato.kazusa.utils.GSON
|
||||||
import io.legato.kazusa.utils.fromJsonObject
|
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.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 binding by viewBinding(DialogMangaColorFilterBinding::bind)
|
||||||
private val mConfig =
|
private val mConfig =
|
||||||
GSON.fromJsonObject<MangaColorFilterConfig>(AppConfig.mangaColorFilter).getOrNull()
|
GSON.fromJsonObject<MangaColorFilterConfig>(AppConfig.mangaColorFilter).getOrNull()
|
||||||
?: MangaColorFilterConfig()
|
?: MangaColorFilterConfig()
|
||||||
private val callback get() = activity as? Callback
|
private val callback: Callback? get() = activity as? Callback
|
||||||
|
|
||||||
|
private var mMangaEInkThreshold = AppConfig.mangaEInkThreshold
|
||||||
|
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
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?) {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
@@ -34,6 +38,17 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
|||||||
|
|
||||||
private fun initData() {
|
private fun initData() {
|
||||||
binding.run {
|
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
|
dsbBrightness.progress = mConfig.l
|
||||||
dsbR.progress = mConfig.r
|
dsbR.progress = mConfig.r
|
||||||
dsbG.progress = mConfig.g
|
dsbG.progress = mConfig.g
|
||||||
@@ -44,6 +59,37 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
|||||||
|
|
||||||
private fun initView() {
|
private fun initView() {
|
||||||
binding.run {
|
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 = {
|
dsbBrightness.onChanged = {
|
||||||
mConfig.l = it
|
mConfig.l = it
|
||||||
callback?.updateColorFilter(mConfig)
|
callback?.updateColorFilter(mConfig)
|
||||||
@@ -70,10 +116,13 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
|||||||
override fun onDismiss(dialog: DialogInterface) {
|
override fun onDismiss(dialog: DialogInterface) {
|
||||||
super.onDismiss(dialog)
|
super.onDismiss(dialog)
|
||||||
AppConfig.mangaColorFilter = mConfig.toJson()
|
AppConfig.mangaColorFilter = mConfig.toJson()
|
||||||
|
AppConfig.mangaEInkThreshold = mMangaEInkThreshold
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Callback {
|
interface Callback {
|
||||||
fun updateColorFilter(config: MangaColorFilterConfig)
|
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.content.DialogInterface
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import androidx.transition.TransitionManager
|
||||||
import io.legato.kazusa.R
|
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.constant.EventBus
|
||||||
import io.legato.kazusa.databinding.DialogMangaFooterSettingBinding
|
import io.legato.kazusa.databinding.DialogMangaFooterSettingBinding
|
||||||
import io.legato.kazusa.help.config.AppConfig
|
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.GSON
|
||||||
import io.legato.kazusa.utils.fromJsonObject
|
import io.legato.kazusa.utils.fromJsonObject
|
||||||
import io.legato.kazusa.utils.postEvent
|
import io.legato.kazusa.utils.postEvent
|
||||||
import io.legato.kazusa.utils.setLayout
|
|
||||||
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
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()
|
val config = GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull()
|
||||||
?: MangaFooterConfig()
|
?: MangaFooterConfig()
|
||||||
|
|
||||||
|
var callback: Callback? = null
|
||||||
|
|
||||||
|
var initialAutoPageEnabled: Boolean = false
|
||||||
|
var initialAutoPageSpeed: Int = 3
|
||||||
|
|
||||||
private val binding by viewBinding(DialogMangaFooterSettingBinding::bind)
|
private val binding by viewBinding(DialogMangaFooterSettingBinding::bind)
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
|
||||||
binding.cbChapterLabel.run {
|
binding.cbChapterLabel.run {
|
||||||
isChecked = config.hideChapterLabel
|
isChecked = !config.hideChapterLabel
|
||||||
setOnCheckedChangeListener { _, isChecked ->
|
setOnCheckedChangeListener { _, isChecked ->
|
||||||
config.hideChapterLabel = isChecked
|
config.hideChapterLabel = !isChecked
|
||||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||||
|
updateChapterText()
|
||||||
|
if (isChecked) binding.cbChapter.isChecked = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.cbChapter.run {
|
binding.cbChapter.run {
|
||||||
isChecked = config.hideChapter
|
isChecked = !config.hideChapter
|
||||||
setOnCheckedChangeListener { _, isChecked ->
|
setOnCheckedChangeListener { _, isChecked ->
|
||||||
config.hideChapter = 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
|
|
||||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
||||||
|
updateChapterText()
|
||||||
|
if (!isChecked) binding.cbChapterLabel.isChecked = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.cbChapterName.run {
|
binding.cbChapterName.run {
|
||||||
isChecked = config.hideChapterName
|
isChecked = !config.hideChapterName
|
||||||
setOnCheckedChangeListener { _, isChecked ->
|
setOnCheckedChangeListener { _, isChecked ->
|
||||||
config.hideChapterName = isChecked
|
config.hideChapterName = !isChecked
|
||||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
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 ->
|
binding.cbPageNumberLabel.run {
|
||||||
when (checkedId) {
|
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 -> {
|
R.id.rb_left -> {
|
||||||
|
config.hideFooter = false
|
||||||
config.footerOrientation = ReaderInfoBarView.ALIGN_LEFT
|
config.footerOrientation = ReaderInfoBarView.ALIGN_LEFT
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.rb_center -> {
|
R.id.rb_center -> {
|
||||||
|
config.hideFooter = false
|
||||||
config.footerOrientation = ReaderInfoBarView.ALIGN_CENTER
|
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 -> {
|
R.id.rb_hide -> {
|
||||||
config.hideFooter = true
|
config.hideFooter = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
postEvent(EventBus.UP_MANGA_CONFIG, config)
|
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) {
|
override fun onDismiss(dialog: DialogInterface) {
|
||||||
super.onDismiss(dialog)
|
super.onDismiss(dialog)
|
||||||
AppConfig.mangaFooterConfig = GSON.toJson(config)
|
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,
|
@IntRange(0, 255) private val threshold: Int = 128,
|
||||||
) : BitmapTransformation() {
|
) : BitmapTransformation() {
|
||||||
|
|
||||||
private val ID =
|
private val ID get() = "io.legado.app.model.EpaperTransformation.$threshold"
|
||||||
"io.legado.app.model.EpaperTransformation.${threshold}"
|
private val ID_BYTES get() = ID.toByteArray(CHARSET)
|
||||||
private val ID_BYTES = ID.toByteArray(CHARSET)
|
|
||||||
|
|
||||||
override fun transform(
|
override fun transform(
|
||||||
pool: BitmapPool,
|
pool: BitmapPool,
|
||||||
|
|||||||
@@ -253,21 +253,13 @@ class MangaAdapter(private val context: Context) :
|
|||||||
fun enableMangaEInk(enable: Boolean, value: Int) {
|
fun enableMangaEInk(enable: Boolean, value: Int) {
|
||||||
if (enable) {
|
if (enable) {
|
||||||
currentMangaEInkThreshold = value
|
currentMangaEInkThreshold = value
|
||||||
mTransformation = EpaperTransformation(currentMangaEInkThreshold)
|
mTransformation = EpaperTransformation(value)
|
||||||
} else {
|
} else {
|
||||||
mTransformation = null
|
mTransformation = null
|
||||||
}
|
}
|
||||||
notifyItemRangeChanged(0, itemCount)
|
notifyItemRangeChanged(0, itemCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateThreshold(mangaEInkThreshold: Int) {
|
|
||||||
if (currentMangaEInkThreshold != mangaEInkThreshold) {
|
|
||||||
currentMangaEInkThreshold = mangaEInkThreshold
|
|
||||||
mTransformation = EpaperTransformation(currentMangaEInkThreshold)
|
|
||||||
notifyItemRangeChanged(0, itemCount)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//开启灰色图片
|
//开启灰色图片
|
||||||
fun enableGray(enable: Boolean) {
|
fun enableGray(enable: Boolean) {
|
||||||
mTransformation = if (enable) {
|
mTransformation = if (enable) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package io.legato.kazusa.ui.book.read
|
package io.legato.kazusa.ui.book.read
|
||||||
|
|
||||||
|
//import io.legado.app.lib.theme.bottomBackground
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.GradientDrawable
|
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.animation.Animation
|
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.config.AppConfig
|
||||||
import io.legato.kazusa.help.source.getSourceType
|
import io.legato.kazusa.help.source.getSourceType
|
||||||
import io.legato.kazusa.lib.dialogs.alert
|
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.ReadBook
|
||||||
import io.legato.kazusa.model.ReadManga
|
import io.legato.kazusa.model.ReadManga
|
||||||
import io.legato.kazusa.ui.browser.WebViewActivity
|
import io.legato.kazusa.ui.browser.WebViewActivity
|
||||||
import io.legato.kazusa.utils.ConstraintModify
|
import io.legato.kazusa.utils.ConstraintModify
|
||||||
import io.legato.kazusa.utils.activity
|
import io.legato.kazusa.utils.activity
|
||||||
import io.legato.kazusa.utils.applyNavigationBarPadding
|
import io.legato.kazusa.utils.applyNavigationBarPadding
|
||||||
import io.legato.kazusa.utils.dpToPx
|
|
||||||
import io.legato.kazusa.utils.gone
|
import io.legato.kazusa.utils.gone
|
||||||
import io.legato.kazusa.utils.invisible
|
import io.legato.kazusa.utils.invisible
|
||||||
import io.legato.kazusa.utils.loadAnimation
|
import io.legato.kazusa.utils.loadAnimation
|
||||||
@@ -95,15 +93,15 @@ class MangaMenu @JvmOverloads constructor(
|
|||||||
|
|
||||||
private fun initView() = binding.run {
|
private fun initView() = binding.run {
|
||||||
initAnimation()
|
initAnimation()
|
||||||
val brightnessBackground = GradientDrawable()
|
// val brightnessBackground = GradientDrawable()
|
||||||
brightnessBackground.cornerRadius = 5F.dpToPx()
|
// brightnessBackground.cornerRadius = 5F.dpToPx()
|
||||||
//brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
// //brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
||||||
if (AppConfig.isEInkMode) {
|
// if (AppConfig.isEInkMode) {
|
||||||
titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
// titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||||
bottomMenu.setBackgroundResource(R.drawable.bg_eink_border_top)
|
// bottomMenu.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||||
} else {
|
// } else {
|
||||||
//bottomMenu.setBackgroundColor(bgColor)
|
// //bottomMenu.setBackgroundColor(bgColor)
|
||||||
}
|
// }
|
||||||
if (AppConfig.showReadTitleBarAddition) {
|
if (AppConfig.showReadTitleBarAddition) {
|
||||||
titleBarAddition.visible()
|
titleBarAddition.visible()
|
||||||
} else {
|
} else {
|
||||||
@@ -113,7 +111,7 @@ class MangaMenu @JvmOverloads constructor(
|
|||||||
/**
|
/**
|
||||||
* 确保视图不被导航栏遮挡
|
* 确保视图不被导航栏遮挡
|
||||||
*/
|
*/
|
||||||
bottomMenu.applyNavigationBarPadding()
|
bottomView.applyNavigationBarPadding()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun upBrightnessVwPos() {
|
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 {
|
private fun bindEvent() = binding.run {
|
||||||
vwMenuBg.setOnClickListener { runMenuOut() }
|
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) {
|
fun upSeekBar(value: Int, count: Int) {
|
||||||
binding.seekReadPage.apply {
|
binding.seekReadPage.apply {
|
||||||
valueFrom = 1f
|
valueFrom = 1f
|
||||||
valueTo = (count).toFloat()
|
valueTo = count.toFloat()
|
||||||
this.value = value.toFloat().coerceIn(1f,valueFrom)
|
|
||||||
stepSize = 1f
|
stepSize = 1f
|
||||||
|
this.value = value.toFloat().coerceIn(valueFrom, valueTo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,6 +261,8 @@ class MangaMenu @JvmOverloads constructor(
|
|||||||
fun openBookInfoActivity()
|
fun openBookInfoActivity()
|
||||||
fun upSystemUiVisibility(menuIsVisible: Boolean)
|
fun upSystemUiVisibility(menuIsVisible: Boolean)
|
||||||
fun skipToPage(index: Int)
|
fun skipToPage(index: Int)
|
||||||
|
fun openCatalog()
|
||||||
|
fun showFooterConfig()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -143,8 +143,6 @@ class SimpleCounterView @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private fun updateValue() {
|
private fun updateValue() {
|
||||||
binding.tvSeekValue.text = valueFormat?.invoke(_progress) ?: _progress.toString()
|
binding.tvSeekValue.text = valueFormat?.invoke(_progress) ?: _progress.toString()
|
||||||
}
|
}
|
||||||
@@ -185,4 +183,12 @@ class SimpleCounterView @JvmOverloads constructor(
|
|||||||
super.onDetachedFromWindow()
|
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"
|
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic">
|
android:interpolator="@android:interpolator/decelerate_cubic">
|
||||||
<translate
|
<translate
|
||||||
android:fromYDelta="100%"
|
android:duration="240"
|
||||||
android:toYDelta="0%"
|
android:toYDelta="0%"
|
||||||
android:duration="280"/>
|
android:fromYDelta="8%" />
|
||||||
<alpha
|
<alpha
|
||||||
android:fromAlpha="0.0"
|
android:fromAlpha="0.0"
|
||||||
android:toAlpha="1.0"
|
android:toAlpha="1.0"
|
||||||
android:duration="280"/>
|
android:duration="240" />
|
||||||
</set>
|
</set>
|
||||||
@@ -1,12 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic">
|
android:interpolator="@android:interpolator/decelerate_cubic">
|
||||||
<translate
|
|
||||||
android:fromYDelta="0%"
|
|
||||||
android:toYDelta="100%"
|
|
||||||
android:duration="280"/>
|
|
||||||
<alpha
|
<alpha
|
||||||
android:fromAlpha="1.0"
|
android:fromAlpha="1.0"
|
||||||
android:toAlpha="0.0"
|
android:toAlpha="0.0"
|
||||||
android:duration="280"/>
|
android:duration="240" />
|
||||||
</set>
|
</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"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:padding="16dp">
|
android:paddingHorizontal="16dp"
|
||||||
|
android:paddingVertical="8dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<io.legato.kazusa.ui.widget.text.AccentTextView
|
<LinearLayout
|
||||||
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"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:max="255"
|
android:gravity="center"
|
||||||
app:title="@string/brightness" />
|
android:orientation="vertical"
|
||||||
|
android:paddingHorizontal="16dp"
|
||||||
|
android:paddingVertical="8dp">
|
||||||
|
|
||||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
<View
|
||||||
android:id="@+id/dsb_r"
|
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_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:max="255"
|
android:gravity="center_vertical">
|
||||||
app:title="R" />
|
|
||||||
|
|
||||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||||
android:id="@+id/dsb_g"
|
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_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:max="255"
|
android:gravity="center_vertical"
|
||||||
app:title="G" />
|
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_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:max="255"
|
android:gravity="center_vertical">
|
||||||
app:title="B" />
|
|
||||||
|
|
||||||
<io.legato.kazusa.ui.widget.DetailSeekBar
|
<io.legato.kazusa.ui.widget.SimpleCounterView
|
||||||
android:id="@+id/dsb_a"
|
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_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:max="255"
|
android:gravity="center_vertical">
|
||||||
app:title="A" />
|
|
||||||
|
<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>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -2,168 +2,202 @@
|
|||||||
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="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
|
<LinearLayout
|
||||||
|
android:id="@+id/root_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
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
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:gravity="center"
|
||||||
android:layout_marginTop="8dp">
|
android:orientation="vertical"
|
||||||
|
android:paddingHorizontal="16dp"
|
||||||
|
android:paddingVertical="8dp">
|
||||||
|
|
||||||
<io.legato.kazusa.lib.theme.view.ThemeCheckBox
|
<View
|
||||||
android:id="@+id/cb_chapter_label"
|
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_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:text="漫画设置"
|
||||||
android:text="@string/manga_check_chapter_label" />
|
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>
|
</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
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:gravity="center_vertical"
|
||||||
android:layout_marginTop="8dp">
|
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:id="@+id/cb_page_number_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
style="@style/Widget.Material3.Chip.Suggestion"
|
||||||
android:text="@string/manga_check_page_label" />
|
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:id="@+id/cb_page_number"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="10dp"
|
style="@style/Widget.Material3.Chip.Suggestion"
|
||||||
android:gravity="center"
|
android:text="4/30" />
|
||||||
android:text="@string/manga_check_page_number" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
</com.google.android.material.chip.ChipGroup>
|
||||||
|
|
||||||
|
<com.google.android.material.chip.ChipGroup
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
android:text="@string/manga_header_progress"
|
|
||||||
android:textSize="14sp" />
|
|
||||||
|
|
||||||
<LinearLayout
|
<com.google.android.material.chip.Chip
|
||||||
android:layout_width="wrap_content"
|
android:id="@+id/cb_chapter_label"
|
||||||
android:layout_height="wrap_content"
|
style="@style/Widget.Material3.Chip.Suggestion"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_width="wrap_content"
|
||||||
android:layout_marginTop="8dp">
|
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:id="@+id/cb_progress_ratio_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
style="@style/Widget.Material3.Chip.Suggestion"
|
||||||
android:text="@string/manga_check_progress_label" />
|
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:id="@+id/cb_progress_ratio"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="10dp"
|
style="@style/Widget.Material3.Chip.Suggestion"
|
||||||
android:gravity="center"
|
android:text="2.1%" />
|
||||||
android:text="@string/manga_check_progress" />
|
</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>
|
</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_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="16dp"
|
android:text="@string/manga_color_filter" />
|
||||||
android:text="@string/manga_header_footer"
|
|
||||||
android:textSize="14sp" />
|
|
||||||
|
|
||||||
<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>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:padding="5dp"
|
android:padding="8dp"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
|
|||||||
@@ -19,64 +19,60 @@
|
|||||||
android:id="@+id/title_bar"
|
android:id="@+id/title_bar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:theme="?attr/actionBarStyle"
|
android:alpha="0.92"
|
||||||
|
android:background="?attr/colorSurfaceContainer"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<LinearLayout
|
||||||
android:id="@+id/title_bar_addition"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingHorizontal="16dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_chapter_name"
|
android:id="@+id/tv_book_name"
|
||||||
android:layout_width="0dp"
|
style="@style/TextAppearance.Material3.TitleLarge"
|
||||||
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:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="0dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="1dp"
|
android:singleLine="true" />
|
||||||
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" />
|
|
||||||
|
|
||||||
</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>
|
</io.legato.kazusa.ui.widget.TitleBar>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
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:importantForAccessibility="no"
|
android:importantForAccessibility="no"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintBottom_toBottomOf="parent">
|
app:layout_constraintBottom_toBottomOf="parent">
|
||||||
@@ -84,10 +80,8 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="20dp"
|
android:layout_marginHorizontal="16dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginVertical="8dp"
|
||||||
android:layout_marginRight="20dp"
|
|
||||||
android:layout_marginBottom="10dp"
|
|
||||||
android:importantForAccessibility="no"
|
android:importantForAccessibility="no"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
@@ -99,12 +93,20 @@
|
|||||||
app:icon="@drawable/ic_previous"
|
app:icon="@drawable/ic_previous"
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
<com.google.android.material.card.MaterialCardView
|
||||||
android:id="@+id/seek_read_page"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="25dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_weight="1"
|
||||||
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
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/tv_next"
|
android:id="@+id/tv_next"
|
||||||
@@ -114,6 +116,69 @@
|
|||||||
app:icon="@drawable/ic_next"
|
app:icon="@drawable/ic_next"
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
</LinearLayout>
|
</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>
|
</LinearLayout>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -66,9 +66,6 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</io.legato.kazusa.ui.widget.TitleBar>
|
</io.legato.kazusa.ui.widget.TitleBar>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|||||||
@@ -17,12 +17,6 @@
|
|||||||
android:title="@string/refresh"
|
android:title="@string/refresh"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
<item
|
|
||||||
android:id="@+id/menu_catalog"
|
|
||||||
android:icon="@drawable/ic_toc"
|
|
||||||
android:title="@string/chapter_list"
|
|
||||||
app:showAsAction="always" />
|
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<item
|
<item
|
||||||
@@ -44,13 +38,6 @@
|
|||||||
android:title="@string/disable_manga_click_scroll"
|
android:title="@string/disable_manga_click_scroll"
|
||||||
app:showAsAction="never" />
|
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
|
<item
|
||||||
android:id="@+id/menu_enable_auto_scroll"
|
android:id="@+id/menu_enable_auto_scroll"
|
||||||
android:checkable="true"
|
android:checkable="true"
|
||||||
@@ -58,12 +45,6 @@
|
|||||||
android:title="@string/enable_auto_scroll"
|
android:title="@string/enable_auto_scroll"
|
||||||
app:showAsAction="never" />
|
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
|
<item
|
||||||
android:id="@+id/menu_enable_horizontal_scroll"
|
android:id="@+id/menu_enable_horizontal_scroll"
|
||||||
android:checkable="true"
|
android:checkable="true"
|
||||||
@@ -79,11 +60,6 @@
|
|||||||
android:visible="false"
|
android:visible="false"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
<item
|
|
||||||
android:id="@+id/menu_manga_footer_config"
|
|
||||||
android:title="@string/manga_footer_config"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_manga_color_filter"
|
android:id="@+id/menu_manga_color_filter"
|
||||||
android:title="@string/manga_color_filter"
|
android:title="@string/manga_color_filter"
|
||||||
@@ -96,24 +72,4 @@
|
|||||||
android:title="@string/hide_manga_title"
|
android:title="@string/hide_manga_title"
|
||||||
app:showAsAction="never" />
|
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>
|
</menu>
|
||||||
@@ -1200,15 +1200,15 @@
|
|||||||
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
|
<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_after">下载之后章节</string>
|
||||||
<string name="menu_download_all">下载全部章节</string>
|
<string name="menu_download_all">下载全部章节</string>
|
||||||
<string name="manga_header_chapter">《章节和文案》隐藏</string>
|
<string name="manga_header_chapter">章节显示设置</string>
|
||||||
<string name="manga_check_chapter_label">《章节.》文案</string>
|
<string name="manga_check_chapter_label">章节</string>
|
||||||
<string name="manga_check_chapter">章节</string>
|
<string name="manga_check_chapter">章节</string>
|
||||||
<string name="manga_check_chapter_name">章节名称</string>
|
<string name="manga_check_chapter_name">章节名称</string>
|
||||||
<string name="manga_header_page">《页数和文案》隐藏</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_check_page_number">页数</string>
|
||||||
<string name="manga_header_progress">《总进度和文案》隐藏</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_check_progress">总进度</string>
|
||||||
<string name="manga_header_footer">页脚</string>
|
<string name="manga_header_footer">页脚</string>
|
||||||
<string name="manga_radio_left">靠左</string>
|
<string name="manga_radio_left">靠左</string>
|
||||||
|
|||||||
Reference in new issue
Block a user