From 049f32d2f0bd7193fc44d1ebe73ef93b43e89709 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 21 Mar 2021 18:33:13 +0200 Subject: [PATCH] Fix smooth page switching --- .../ui/pager/reversed/ReversedReaderFragment.kt | 7 ++++++- .../reader/ui/pager/standard/PagerReaderFragment.kt | 11 ++++++++++- .../reader/ui/pager/wetoon/WebtoonReaderFragment.kt | 6 +----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt index a0ffe4678..9da14c353 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedReaderFragment.kt @@ -12,7 +12,9 @@ import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.reader.ui.pager.BaseReader import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter import org.koitharu.kotatsu.reader.ui.pager.ReaderPage +import org.koitharu.kotatsu.reader.ui.pager.standard.PagerReaderFragment import org.koitharu.kotatsu.utils.ext.* +import kotlin.math.absoluteValue class ReversedReaderFragment : BaseReader() { @@ -58,7 +60,10 @@ class ReversedReaderFragment : BaseReader() { } override fun switchPageTo(position: Int, smooth: Boolean) { - binding.pager.setCurrentItem(reversed(position), smooth) + binding.pager.setCurrentItem( + reversed(position), + smooth && (binding.pager.currentItem - position).absoluteValue < PagerReaderFragment.SMOOTH_SCROLL_LIMIT + ) } override fun onPagesChanged(pages: List, pendingState: ReaderState?) { diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt index 42758bdf3..c93a27ef0 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt @@ -13,6 +13,7 @@ import org.koitharu.kotatsu.reader.ui.pager.BaseReader import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter import org.koitharu.kotatsu.reader.ui.pager.ReaderPage import org.koitharu.kotatsu.utils.ext.* +import kotlin.math.absoluteValue class PagerReaderFragment : BaseReader() { @@ -78,7 +79,10 @@ class PagerReaderFragment : BaseReader() { } override fun switchPageTo(position: Int, smooth: Boolean) { - binding.pager.setCurrentItem(position, smooth) + binding.pager.setCurrentItem( + position, + smooth && (binding.pager.currentItem - position).absoluteValue < SMOOTH_SCROLL_LIMIT + ) } override fun getCurrentState(): ReaderState? = bindingOrNull()?.run { @@ -94,4 +98,9 @@ class PagerReaderFragment : BaseReader() { private fun notifyPageChanged(page: Int) { viewModel.onCurrentPageChanged(page) } + + companion object { + + const val SMOOTH_SCROLL_LIMIT = 3 + } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/wetoon/WebtoonReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/wetoon/WebtoonReaderFragment.kt index d55aee42d..e1b1ab879 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/wetoon/WebtoonReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/wetoon/WebtoonReaderFragment.kt @@ -88,10 +88,6 @@ class WebtoonReaderFragment : BaseReader() { } override fun switchPageTo(position: Int, smooth: Boolean) { - if (smooth) { - binding.recyclerView.smoothScrollToPosition(position) - } else { - binding.recyclerView.firstItem = position - } + binding.recyclerView.firstItem = position } } \ No newline at end of file