diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt index b9dc28907c..7cb1ab0dfc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt @@ -13,12 +13,7 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity * This layout manager uses the same package name as the support library in order to use a package * protected method. */ -class WebtoonLayoutManager(activity: ReaderActivity) : LinearLayoutManager(activity) { - - /** - * Extra layout space is set to half the screen height. - */ - private val extraLayoutSpace = activity.resources.displayMetrics.heightPixels / 2 +class WebtoonLayoutManager(activity: ReaderActivity, private val extraLayoutSpace: Int) : LinearLayoutManager(activity) { init { isItemPrefetchEnabled = false @@ -27,7 +22,8 @@ class WebtoonLayoutManager(activity: ReaderActivity) : LinearLayoutManager(activ /** * Returns the custom extra layout space. */ - override fun getExtraLayoutSpace(state: androidx.recyclerview.widget.RecyclerView.State): Int { + @Deprecated("Deprecated in Java") + override fun getExtraLayoutSpace(state: RecyclerView.State): Int { return extraLayoutSpace } @@ -37,7 +33,7 @@ class WebtoonLayoutManager(activity: ReaderActivity) : LinearLayoutManager(activ fun findLastEndVisibleItemPosition(): Int { ensureLayoutState() @ViewBoundsCheck.ViewBounds val preferredBoundsFlag = - (androidx.recyclerview.widget.ViewBoundsCheck.FLAG_CVE_LT_PVE or androidx.recyclerview.widget.ViewBoundsCheck.FLAG_CVE_EQ_PVE) + (ViewBoundsCheck.FLAG_CVE_LT_PVE or ViewBoundsCheck.FLAG_CVE_EQ_PVE) val fromIndex = childCount - 1 val toIndex = -1 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 8c8d12aa72..581fb10dac 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -43,21 +43,21 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals */ private val frame = WebtoonFrame(activity) + /** + * Distance to scroll when the user taps on one side of the recycler view. + */ + private var scrollDistance = activity.resources.displayMetrics.heightPixels * 3 / 4 + /** * Layout manager of the recycler view. */ - private val layoutManager = WebtoonLayoutManager(activity) + private val layoutManager = WebtoonLayoutManager(activity, scrollDistance) /** * Adapter of the recycler view. */ private val adapter = WebtoonAdapter(this) - /** - * Distance to scroll when the user taps on one side of the recycler view. - */ - private var scrollDistance = activity.resources.displayMetrics.heightPixels * 3 / 4 - /** * Currently active item. It can be a chapter page or a chapter transition. */ @@ -69,6 +69,7 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals val config = WebtoonConfig(scope) init { + recycler.setItemViewCacheSize(RECYCLER_VIEW_CACHE_SIZE) recycler.isVisible = false // Don't let the recycler layout yet recycler.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT) recycler.itemAnimator = null @@ -328,3 +329,5 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals ) } } + +private const val RECYCLER_VIEW_CACHE_SIZE = 4