diff --git a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt index e165e5d4f..08302561f 100644 --- a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt +++ b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt @@ -26,7 +26,6 @@ object ReadBookConfig { } val durConfig get() = getConfig(styleSelect) private val shareConfig get() = getConfig(5) - var styleSelect = App.INSTANCE.getPrefInt(PreferKey.readStyleSelect) set(value) { field = value @@ -37,6 +36,13 @@ object ReadBookConfig { field = value App.INSTANCE.putPrefBoolean(PreferKey.shareLayout) } + var pageAnim = App.INSTANCE.getPrefInt(PreferKey.pageAnim) + set(value) { + field = value + isScroll = value == 3 + App.INSTANCE.putPrefInt(PreferKey.pageAnim, value) + } + var isScroll = pageAnim == 3 var bg: Drawable? = null init { diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt index 73d4c074c..590985d48 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt @@ -19,7 +19,10 @@ import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.book.read.Help import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.widget.font.FontSelectDialog -import io.legado.app.utils.* +import io.legado.app.utils.getPrefString +import io.legado.app.utils.postEvent +import io.legado.app.utils.putPrefInt +import io.legado.app.utils.putPrefString import kotlinx.android.synthetic.main.activity_book_read.* import kotlinx.android.synthetic.main.dialog_read_book_style.* import org.jetbrains.anko.sdk27.listeners.onCheckedChange @@ -77,7 +80,7 @@ class ReadStyleDialog : DialogFragment(), FontSelectDialog.CallBack { private fun initData() { cb_share_layout.isChecked = ReadBookConfig.shareLayout - requireContext().getPrefInt(PreferKey.pageAnim).let { + ReadBookConfig.pageAnim.let { if (it >= 0 && it < rg_page_anim.childCount) { rg_page_anim.check(rg_page_anim[it].id) } @@ -143,10 +146,10 @@ class ReadStyleDialog : DialogFragment(), FontSelectDialog.CallBack { rg_page_anim.onCheckedChange { _, checkedId -> for (i in 0 until rg_page_anim.childCount) { if (checkedId == rg_page_anim[i].id) { - requireContext().putPrefInt(PreferKey.pageAnim, i) + ReadBookConfig.pageAnim = i val activity = activity if (activity is ReadBookActivity) { - activity.page_view.upPageAnim(i) + activity.page_view.upPageAnim() } break } diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt index 882c47d2d..8d8d9632d 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt @@ -60,6 +60,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at override fun onDraw(canvas: Canvas) { super.onDraw(canvas) + if (textPage.textLines.isEmpty()) { drawMsg(canvas, textPage.text) } else { @@ -117,19 +118,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at offset = -maxScrollOffset } - if (!isLastPage || offset < 0) { - pageOffset += offset - isLastPage = false - } - // 首页 - if (pageOffset < 0 && !pageFactory.hasPrev()) { - pageOffset = 0f - } - - val cHeight = if (textPage.height > 0) textPage.height else height - if (offset > 0 && pageOffset > cHeight) { - - } + pageOffset += offset } fun resetPageOffset() { diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/DataSource.kt b/app/src/main/java/io/legado/app/ui/book/read/page/DataSource.kt index ed223a4cf..c10d4bdd2 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/DataSource.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/DataSource.kt @@ -3,7 +3,6 @@ package io.legado.app.ui.book.read.page import io.legado.app.ui.book.read.page.entities.TextChapter interface DataSource { - val isScrollDelegate: Boolean val pageIndex: Int diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt index d2cae1e92..b2fc6fad4 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt @@ -6,13 +6,11 @@ import android.graphics.Canvas import android.util.AttributeSet import android.view.MotionEvent import android.widget.FrameLayout -import io.legado.app.constant.PreferKey import io.legado.app.help.ReadBookConfig import io.legado.app.service.help.ReadBook import io.legado.app.ui.book.read.page.delegate.* import io.legado.app.ui.book.read.page.entities.TextChapter import io.legado.app.utils.activity -import io.legado.app.utils.getPrefInt class PageView(context: Context, attrs: AttributeSet) : FrameLayout(context, attrs), @@ -37,7 +35,7 @@ class PageView(context: Context, attrs: AttributeSet) : upBg() setWillNotDraw(false) pageFactory = TextPageFactory(this) - upPageAnim(context.getPrefInt(PreferKey.pageAnim)) + upPageAnim() } override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { @@ -87,10 +85,10 @@ class PageView(context: Context, attrs: AttributeSet) : } } - fun upPageAnim(pageAnim: Int) { + fun upPageAnim() { pageDelegate?.onDestroy() pageDelegate = null - pageDelegate = when (pageAnim) { + pageDelegate = when (ReadBookConfig.pageAnim) { 0 -> CoverPageDelegate(this) 1 -> SlidePageDelegate(this) 2 -> SimulationPageDelegate(this) @@ -101,7 +99,7 @@ class PageView(context: Context, attrs: AttributeSet) : } fun upContent(position: Int = 0) { - if (isScrollDelegate) { + if (ReadBookConfig.isScroll) { curPage.setContent(pageFactory.currentPage()) } else { when (position) { @@ -165,9 +163,6 @@ class PageView(context: Context, attrs: AttributeSet) : nextPage.upBattery(battery) } - override val isScrollDelegate: Boolean - get() = pageDelegate is ScrollPageDelegate - override val pageIndex: Int get() = ReadBook.durChapterPos()