This commit is contained in:
Horis
2025-02-20 18:26:24 +08:00
parent 8ed6a1e54e
commit 119acfdcb1
16 changed files with 122 additions and 140 deletions
@@ -31,4 +31,5 @@ object EventBus {
const val UP_SEEK_BAR = "upSeekBar" const val UP_SEEK_BAR = "upSeekBar"
const val READ_ALOUD_PLAY = "readAloudPlay" const val READ_ALOUD_PLAY = "readAloudPlay"
const val EXPORT_BOOK = "exportBook" const val EXPORT_BOOK = "exportBook"
const val UP_MANGA_CONFIG = "upMangaConfig"
} }
@@ -19,7 +19,7 @@ import io.legado.app.help.book.update
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.coroutine.Coroutine
import io.legado.app.help.globalExecutor import io.legado.app.help.globalExecutor
import io.legado.app.model.recyclerView.MangeContent import io.legado.app.model.recyclerView.MangaContent
import io.legado.app.model.recyclerView.ReaderLoading import io.legado.app.model.recyclerView.ReaderLoading
import io.legado.app.model.webBook.WebBook import io.legado.app.model.webBook.WebBook
import io.legado.app.utils.NetworkUtils import io.legado.app.utils.NetworkUtils
@@ -71,7 +71,7 @@ object ReadManga : CoroutineScope by MainScope() {
fun saveRead(pageChanged: Boolean = false) { fun saveRead(pageChanged: Boolean = false) {
executor.execute { executor.execute {
val book = ReadManga.book ?: return@execute val book = book ?: return@execute
book.lastCheckCount = 0 book.lastCheckCount = 0
book.durChapterTime = System.currentTimeMillis() book.durChapterTime = System.currentTimeMillis()
val chapterChanged = book.durChapterIndex != durChapterPagePos val chapterChanged = book.durChapterIndex != durChapterPagePos
@@ -194,8 +194,8 @@ object ReadManga : CoroutineScope by MainScope() {
scope: CoroutineScope, scope: CoroutineScope,
chapter: BookChapter, chapter: BookChapter,
) { ) {
val book = ReadManga.book ?: return removeLoading(chapter.index) val book = book ?: return removeLoading(chapter.index)
val bookSource = ReadManga.bookSource val bookSource = bookSource
if (bookSource != null) { if (bookSource != null) {
getContent(bookSource, scope, chapter, book) getContent(bookSource, scope, chapter, book)
} }
@@ -211,7 +211,7 @@ object ReadManga : CoroutineScope by MainScope() {
) { ) {
if (addLoading(index)) { if (addLoading(index)) {
Coroutine.async { Coroutine.async {
val book = ReadManga.book!! val book = book!!
appDb.bookChapterDao.getChapter(book.bookUrl, index)?.let { chapter -> appDb.bookChapterDao.getChapter(book.bookUrl, index)?.let { chapter ->
getContent( getContent(
downloadScope, downloadScope,
@@ -291,7 +291,7 @@ object ReadManga : CoroutineScope by MainScope() {
emit(mSrc) emit(mSrc)
} }
}.distinctUntilChanged().mapIndexed { index, src -> }.distinctUntilChanged().mapIndexed { index, src ->
MangeContent( MangaContent(
mChapterPageCount = durChapterPageCount, mChapterPageCount = durChapterPageCount,
mChapterPagePos = durChapterPagePos.plus(1), mChapterPagePos = durChapterPagePos.plus(1),
mChapterNextPagePos = durChapterPagePos.plus(1), mChapterNextPagePos = durChapterPagePos.plus(1),
@@ -521,7 +521,7 @@ object ReadManga : CoroutineScope by MainScope() {
}) })
} }
} ?: removeDownloadLoading(index) } ?: removeDownloadLoading(index)
} catch (e: Exception) { } catch (_: Exception) {
removeLoading(index) removeLoading(index)
} }
} }
@@ -612,7 +612,7 @@ object ReadManga : CoroutineScope by MainScope() {
loadContent(durChapterPagePos) loadContent(durChapterPagePos)
} else { } else {
Coroutine.async { Coroutine.async {
val book = ReadManga.book!! val book = book!!
appDb.bookChapterDao.getChapter(book.bookUrl, durChapterPagePos) appDb.bookChapterDao.getChapter(book.bookUrl, durChapterPagePos)
?.let { chapter -> ?.let { chapter ->
getContent( getContent(
@@ -1,7 +1,7 @@
package io.legado.app.model.recyclerView package io.legado.app.model.recyclerView
data class MangeContent( data class MangaContent(
var mChapterPagePos: Int = 0,//总章节位置 var mChapterPagePos: Int = 0,//总章节位置
var mChapterPageCount: Int,//总章节数量 var mChapterPageCount: Int,//总章节数量
var mChapterNextPagePos: Int = 0,//下一章 var mChapterNextPagePos: Int = 0,//下一章
@@ -39,7 +39,7 @@ import io.legado.app.help.storage.Backup
import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.alert
import io.legado.app.model.ReadManga import io.legado.app.model.ReadManga
import io.legado.app.model.ReadManga.mFirstLoading import io.legado.app.model.ReadManga.mFirstLoading
import io.legado.app.model.recyclerView.MangeContent import io.legado.app.model.recyclerView.MangaContent
import io.legado.app.model.recyclerView.ReaderLoading import io.legado.app.model.recyclerView.ReaderLoading
import io.legado.app.receiver.NetworkChangedListener import io.legado.app.receiver.NetworkChangedListener
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
@@ -50,7 +50,6 @@ import io.legado.app.ui.book.manga.rv.MangaAdapter
import io.legado.app.ui.book.read.MangaMenu import io.legado.app.ui.book.read.MangaMenu
import io.legado.app.ui.book.read.ReadBookActivity.Companion.RESULT_DELETED import io.legado.app.ui.book.read.ReadBookActivity.Companion.RESULT_DELETED
import io.legado.app.ui.book.toc.TocActivityResult import io.legado.app.ui.book.toc.TocActivityResult
import io.legado.app.ui.widget.ReaderInfoBarView
import io.legado.app.ui.widget.number.NumberPickerDialog import io.legado.app.ui.widget.number.NumberPickerDialog
import io.legado.app.ui.widget.recycler.LoadMoreView import io.legado.app.ui.widget.recycler.LoadMoreView
import io.legado.app.utils.GSON import io.legado.app.utils.GSON
@@ -108,7 +107,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
} }
private var mMangaAutoPageSpeed = mInitMangaAutoPageSpeed private var mMangaAutoPageSpeed = mInitMangaAutoPageSpeed
private var mMangaFooterConfig: MangaFooterConfig? = null private lateinit var mMangaFooterConfig: MangaFooterConfig
private val mLabelBuilder by lazy { StringBuilder() } private val mLabelBuilder by lazy { StringBuilder() }
private val autoScrollHandler = Handler(Looper.getMainLooper()) private val autoScrollHandler = Handler(Looper.getMainLooper())
@@ -179,11 +178,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
} }
} }
loadMoreView.gone() loadMoreView.gone()
mMangaFooterConfig = GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull() mMangaFooterConfig =
?: MangaFooterConfig() GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull()
observeEvent<MangaFooterConfig>(EventBus.UP_CONFIG) { ?: MangaFooterConfig()
observeEvent<MangaFooterConfig>(EventBus.UP_MANGA_CONFIG) {
mMangaFooterConfig = it mMangaFooterConfig = it
AppConfig.mangaFooterConfig = GSON.toJson(it)
upInfoBar( upInfoBar(
ReadManga.durChapterPagePos.plus(1), ReadManga.durChapterPagePos.plus(1),
ReadManga.durChapterPageCount, ReadManga.durChapterPageCount,
@@ -222,7 +221,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
) { ) {
try { try {
val content = mAdapter.getCurrentList()[position] val content = mAdapter.getCurrentList()[position]
if (content is MangeContent) { if (content is MangaContent) {
ReadManga.durChapterPos = content.mDurChapterPos.minus(1) ReadManga.durChapterPos = content.mDurChapterPos.minus(1)
upInfoBar( upInfoBar(
content.mChapterPagePos, content.mChapterPagePos,
@@ -312,33 +311,29 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
private fun upInfoBar( private fun upInfoBar(
chapterPagePos: Int, chapterPageCount: Int, chapterPos: Int, chapterCount: Int, chapterPagePos: Int, chapterPageCount: Int, chapterPos: Int, chapterCount: Int,
) { ) {
mMangaFooterConfig?.run { mMangaFooterConfig.run {
mLabelBuilder.clear() mLabelBuilder.clear()
binding.infobar.isGone = this.hideFooter binding.infobar.isGone = hideFooter
binding.infobar.textInfoAlignment =this.footerOrientation binding.infobar.textInfoAlignment = footerOrientation
if (!this.hidePageNumber) { if (!hidePageNumber) {
if (!this.hidePageNumberLabel) { if (!hidePageNumberLabel) {
mLabelBuilder.append(getString(R.string.manga_check_page_number)) mLabelBuilder.append(getString(R.string.manga_check_page_number))
} }
mLabelBuilder.append("${chapterPos}/${chapterCount}").append(" ") mLabelBuilder.append("${chapterPos}/${chapterCount}").append(" ")
} }
if (!this.hideChapter) { if (!hideChapter) {
if (!this.hideChapterLabel) { if (!hideChapterLabel) {
mLabelBuilder.append(getString(R.string.manga_check_chapter)) mLabelBuilder.append(getString(R.string.manga_check_chapter))
} }
mLabelBuilder.append("${chapterPagePos}/${chapterPageCount}").append(" ") mLabelBuilder.append("${chapterPagePos}/${chapterPageCount}").append(" ")
} }
if (!this.hideProgressRatio) { if (!hideProgressRatio) {
if (!this.hideProgressRatioLabel) { if (!hideProgressRatioLabel) {
mLabelBuilder.append(getString(R.string.manga_check_progress)) mLabelBuilder.append(getString(R.string.manga_check_progress))
} }
mLabelBuilder.append( mLabelBuilder.append("${chapterPagePos.div(chapterPageCount).times(100)}%")
"${
chapterPagePos.div(chapterPageCount).times(100)
}%"
)
} }
} }
binding.infobar.update( binding.infobar.update(
@@ -1,5 +1,6 @@
package io.legado.app.ui.book.manga.config package io.legado.app.ui.book.manga.config
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.ViewGroup
@@ -26,76 +27,79 @@ class MangaFooterSettingDialog : BaseDialogFragment(R.layout.dialog_manga_footer
} }
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_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
} }
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_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
} }
binding.cbPageNumberLabel.run { binding.cbPageNumberLabel.run {
isChecked = config.hidePageNumberLabel isChecked = config.hidePageNumberLabel
setOnCheckedChangeListener { _, isChecked -> setOnCheckedChangeListener { _, isChecked ->
config.hidePageNumberLabel = isChecked config.hidePageNumberLabel = isChecked
postEvent(EventBus.UP_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
} }
binding.cbPageNumber.run { binding.cbPageNumber.run {
isChecked = config.hidePageNumber isChecked = config.hidePageNumber
setOnCheckedChangeListener { _, isChecked -> setOnCheckedChangeListener { _, isChecked ->
config.hidePageNumber = isChecked config.hidePageNumber = isChecked
postEvent(EventBus.UP_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
} }
binding.cbProgressRatioLabel.run { binding.cbProgressRatioLabel.run {
isChecked = config.hideProgressRatioLabel isChecked = config.hideProgressRatioLabel
setOnCheckedChangeListener { _, isChecked -> setOnCheckedChangeListener { _, isChecked ->
config.hideProgressRatioLabel = isChecked config.hideProgressRatioLabel = isChecked
postEvent(EventBus.UP_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
} }
binding.cbProgressRatio.run { binding.cbProgressRatio.run {
isChecked = config.hideProgressRatio isChecked = config.hideProgressRatio
setOnCheckedChangeListener { _, isChecked -> setOnCheckedChangeListener { _, isChecked ->
config.hideProgressRatio = isChecked config.hideProgressRatio = isChecked
postEvent(EventBus.UP_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
} }
binding.rgFooterOrientation.check(if (config.footerOrientation == ReaderInfoBarView.ALIGN_CENTER) R.id.rbCenter else R.id.rbLeft) binding.rgFooterOrientation.check(if (config.footerOrientation == ReaderInfoBarView.ALIGN_CENTER) R.id.rb_center else R.id.rb_left)
binding.rgFooterOrientation.setOnCheckedChangeListener { _, checkedId -> binding.rgFooterOrientation.setOnCheckedChangeListener { _, checkedId ->
when (checkedId) { when (checkedId) {
R.id.rbLeft -> { R.id.rb_left -> {
config.footerOrientation = ReaderInfoBarView.ALIGN_LEFT config.footerOrientation = ReaderInfoBarView.ALIGN_LEFT
} }
R.id.rbCenter -> { R.id.rb_center -> {
config.footerOrientation = ReaderInfoBarView.ALIGN_CENTER config.footerOrientation = ReaderInfoBarView.ALIGN_CENTER
} }
} }
postEvent(EventBus.UP_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
binding.rgFooter.check(if (config.hideFooter) R.id.rbDisable else R.id.rbEnable) binding.rgFooter.check(if (config.hideFooter) R.id.rb_disable else R.id.rb_enable)
binding.rgFooter.setOnCheckedChangeListener { _, checkedId -> binding.rgFooter.setOnCheckedChangeListener { _, checkedId ->
when (checkedId) { when (checkedId) {
R.id.rbEnable -> { R.id.rb_enable -> {
config.hideFooter = false config.hideFooter = false
} }
R.id.rbDisable -> { R.id.rb_disable -> {
config.hideFooter = true config.hideFooter = true
} }
} }
postEvent(EventBus.UP_CONFIG, config) postEvent(EventBus.UP_MANGA_CONFIG, config)
} }
} }
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
AppConfig.mangaFooterConfig = GSON.toJson(config)
}
} }
@@ -23,7 +23,7 @@ import io.legado.app.help.glide.progress.ProgressManager
import io.legado.app.model.BookCover import io.legado.app.model.BookCover
import io.legado.app.model.ReadManga import io.legado.app.model.ReadManga
import io.legado.app.model.recyclerView.MangaVH import io.legado.app.model.recyclerView.MangaVH
import io.legado.app.model.recyclerView.MangeContent import io.legado.app.model.recyclerView.MangaContent
import io.legado.app.model.recyclerView.ReaderLoading import io.legado.app.model.recyclerView.ReaderLoading
import io.legado.app.utils.getCompatDrawable import io.legado.app.utils.getCompatDrawable
import java.util.Collections import java.util.Collections
@@ -41,7 +41,7 @@ class MangaAdapter(private val context: Context) :
override fun areItemsTheSame(oldItem: Any, newItem: Any): Boolean { override fun areItemsTheSame(oldItem: Any, newItem: Any): Boolean {
return if (oldItem is ReaderLoading && newItem is ReaderLoading) { return if (oldItem is ReaderLoading && newItem is ReaderLoading) {
newItem.mMessage == oldItem.mMessage newItem.mMessage == oldItem.mMessage
} else if (oldItem is MangeContent && newItem is MangeContent) { } else if (oldItem is MangaContent && newItem is MangaContent) {
oldItem.mImageUrl == newItem.mImageUrl oldItem.mImageUrl == newItem.mImageUrl
} else false } else false
} }
@@ -49,7 +49,7 @@ class MangaAdapter(private val context: Context) :
override fun areContentsTheSame(oldItem: Any, newItem: Any): Boolean { override fun areContentsTheSame(oldItem: Any, newItem: Any): Boolean {
return if (oldItem is ReaderLoading && newItem is ReaderLoading) { return if (oldItem is ReaderLoading && newItem is ReaderLoading) {
oldItem == newItem oldItem == newItem
} else if (oldItem is MangeContent && newItem is MangeContent) { } else if (oldItem is MangaContent && newItem is MangaContent) {
oldItem == newItem oldItem == newItem
} else false } else false
} }
@@ -88,13 +88,13 @@ class MangaAdapter(private val context: Context) :
) )
binding.retry.setOnClickListener { binding.retry.setOnClickListener {
val item = mDiffer.currentList[layoutPosition] val item = mDiffer.currentList[layoutPosition]
if (item is MangeContent) { if (item is MangaContent) {
loadImageWithRetry(item.mImageUrl) loadImageWithRetry(item.mImageUrl)
} }
} }
} }
fun onBind(item: MangeContent) { fun onBind(item: MangaContent) {
loadImageWithRetry(item.mImageUrl) loadImageWithRetry(item.mImageUrl)
} }
} }
@@ -142,7 +142,7 @@ class MangaAdapter(private val context: Context) :
override fun getItemViewType(position: Int): Int { override fun getItemViewType(position: Int): Int {
return when { return when {
isFooter(position) -> TYPE_FOOTER_VIEW + position - getActualItemCount() isFooter(position) -> TYPE_FOOTER_VIEW + position - getActualItemCount()
getItem(position) is MangeContent -> CONTENT_VIEW getItem(position) is MangaContent -> CONTENT_VIEW
getItem(position) is ReaderLoading -> LOADING_VIEW getItem(position) is ReaderLoading -> LOADING_VIEW
else -> error("Unknown view type!") else -> error("Unknown view type!")
} }
@@ -169,7 +169,7 @@ class MangaAdapter(private val context: Context) :
override fun onBindViewHolder(vh: RecyclerView.ViewHolder, position: Int) { override fun onBindViewHolder(vh: RecyclerView.ViewHolder, position: Int) {
when (vh) { when (vh) {
is PageViewHolder -> vh.onBind(getItem(position) as MangeContent) is PageViewHolder -> vh.onBind(getItem(position) as MangaContent)
is PageMoreViewHolder -> vh.onBind(getItem(position) as ReaderLoading) is PageMoreViewHolder -> vh.onBind(getItem(position) as ReaderLoading)
} }
} }
@@ -209,7 +209,7 @@ class MangaAdapter(private val context: Context) :
} }
override fun getPreloadRequestBuilder(item: Any): RequestBuilder<*>? { override fun getPreloadRequestBuilder(item: Any): RequestBuilder<*>? {
if (item is MangeContent) { if (item is MangaContent) {
return BookCover.loadManga( return BookCover.loadManga(
context, context,
item.mImageUrl, item.mImageUrl,
@@ -2,181 +2,163 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout 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:orientation="vertical"> android:orientation="vertical"
android:padding="16dp">
<io.legado.app.ui.widget.text.AccentTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manga_footer_config"
android:textSize="18sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="14dp" android:layout_marginTop="16dp"
android:layout_marginTop="20dp"
android:text="@string/manga_header_chapter" android:text="@string/manga_header_chapter"
android:textColor="@color/black" android:textColor="@color/primaryText"
android:textSize="14sp" /> android:textSize="14sp" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="30dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp"> android:layout_marginTop="8dp">
<CheckBox <io.legado.app.lib.theme.view.ThemeCheckBox
android:id="@+id/cbChapterLabel" android:id="@+id/cb_chapter_label"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:text="@string/manga_check_chapter_label" android:text="@string/manga_check_chapter_label" />
android:textColor="#333333"
android:textSize="12sp" />
<CheckBox <io.legado.app.lib.theme.view.ThemeCheckBox
android:id="@+id/cbChapter" android:id="@+id/cb_chapter"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:gravity="center" android:gravity="center"
android:text="@string/manga_check_chapter" android:text="@string/manga_check_chapter" />
android:textColor="#333333"
android:textSize="12sp" />
</LinearLayout> </LinearLayout>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="14dp" android:layout_marginTop="16dp"
android:layout_marginTop="20dp"
android:text="@string/manga_header_page" android:text="@string/manga_header_page"
android:textColor="@color/black" android:textColor="@color/primaryText"
android:textSize="14sp" /> android:textSize="14sp" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="30dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp"> android:layout_marginTop="8dp">
<CheckBox <io.legado.app.lib.theme.view.ThemeCheckBox
android:id="@+id/cbPageNumberLabel" 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" android:gravity="center"
android:text="@string/manga_check_page_label" android:text="@string/manga_check_page_label" />
android:textColor="#333333"
android:textSize="12sp" />
<CheckBox <io.legado.app.lib.theme.view.ThemeCheckBox
android:id="@+id/cbPageNumber" 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" android:layout_marginStart="10dp"
android:gravity="center" android:gravity="center"
android:text="@string/manga_check_page_number" android:text="@string/manga_check_page_number" />
android:textColor="#333333"
android:textSize="12sp" />
</LinearLayout> </LinearLayout>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="14dp" android:layout_marginTop="16dp"
android:layout_marginTop="20dp"
android:text="@string/manga_header_progress" android:text="@string/manga_header_progress"
android:textColor="@color/black" android:textColor="@color/primaryText"
android:textSize="14sp" /> android:textSize="14sp" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="30dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp"> android:layout_marginTop="8dp">
<CheckBox <io.legado.app.lib.theme.view.ThemeCheckBox
android:id="@+id/cbProgressRatioLabel" 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" android:gravity="center"
android:text="@string/manga_check_progress_label" android:text="@string/manga_check_progress_label" />
android:textColor="#333333"
android:textSize="12sp" />
<CheckBox <io.legado.app.lib.theme.view.ThemeCheckBox
android:id="@+id/cbProgressRatio" 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" android:layout_marginStart="10dp"
android:gravity="center" android:gravity="center"
android:text="@string/manga_check_progress" android:text="@string/manga_check_progress" />
android:textColor="#333333"
android:textSize="12sp" />
</LinearLayout> </LinearLayout>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="14dp" android:layout_marginTop="16dp"
android:layout_marginTop="20dp"
android:text="@string/manga_header_footer" android:text="@string/manga_header_footer"
android:textColor="@color/black" android:textColor="@color/primaryText"
android:textSize="14sp" /> android:textSize="14sp" />
<RadioGroup <RadioGroup
android:id="@+id/rgFooterOrientation" android:id="@+id/rg_footer_orientation"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="30dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp" android:layout_marginTop="8dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal"> android:orientation="horizontal">
<RadioButton <io.legado.app.lib.theme.view.ThemeRadioButton
android:id="@+id/rbLeft" android:id="@+id/rb_left"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:text="@string/manga_radio_left" android:text="@string/manga_radio_left" />
android:textColor="#333333"
android:textSize="12sp" />
<RadioButton <io.legado.app.lib.theme.view.ThemeRadioButton
android:id="@+id/rbCenter" android:id="@+id/rb_center"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:gravity="center" android:gravity="center"
android:text="@string/manga_radio_center" android:text="@string/manga_radio_center" />
android:textColor="#333333"
android:textSize="12sp" />
</RadioGroup> </RadioGroup>
<RadioGroup <RadioGroup
android:id="@+id/rgFooter" android:id="@+id/rg_footer"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="30dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp" android:layout_marginTop="8dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="8dp"
android:orientation="horizontal"> android:orientation="horizontal">
<RadioButton <io.legado.app.lib.theme.view.ThemeRadioButton
android:id="@+id/rbDisable" android:id="@+id/rb_disable"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:text="@string/manga_radio_disable" android:text="@string/manga_radio_disable" />
android:textColor="#333333"
android:textSize="12sp" />
<RadioButton <io.legado.app.lib.theme.view.ThemeRadioButton
android:id="@+id/rbEnable" android:id="@+id/rb_enable"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:gravity="center" android:gravity="center"
android:text="@string/manga_radio_enable" android:text="@string/manga_radio_enable" />
android:textColor="#333333"
android:textSize="12sp" />
</RadioGroup> </RadioGroup>
+1 -1
View File
@@ -1182,7 +1182,7 @@
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -1185,7 +1185,7 @@
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -1185,7 +1185,7 @@
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -1181,7 +1181,7 @@ Còn </string>
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -1182,7 +1182,7 @@
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -1184,7 +1184,7 @@
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -1184,7 +1184,7 @@
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -1185,7 +1185,7 @@
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="show_same_source">显示重复书源</string> <string name="show_same_source">显示重复书源</string>
<string name="theme_config">主题配置</string> <string name="theme_config">主题配置</string>
<string name="show_mange_ui">漫画浏览</string> <string name="show_manga_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string> <string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string> <string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string> <string name="enable_auto_page_scroller">开启自动翻页</string>
+1 -1
View File
@@ -171,7 +171,7 @@
<io.legado.app.lib.prefs.SwitchPreference <io.legado.app.lib.prefs.SwitchPreference
android:defaultValue="true" android:defaultValue="true"
android:key="showMangaUi" android:key="showMangaUi"
android:title="@string/show_mange_ui" android:title="@string/show_manga_ui"
app:iconSpaceReserved="false" /> app:iconSpaceReserved="false" />
<io.legado.app.lib.prefs.Preference <io.legado.app.lib.prefs.Preference