Skip to content

Commit

Permalink
Match extra layout space with scroll distance (mihonapp/mihon#1076)
Browse files Browse the repository at this point in the history
And increase recycler item view cache size.

(cherry picked from commit a3dfd2e)
  • Loading branch information
FooIbar authored and cuong-tran committed Aug 5, 2024
1 parent 2ee0fd4 commit d584428
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,7 @@ import androidx.recyclerview.widget.RecyclerView.NO_POSITION
* This layout manager uses the same package name as the support library in order to use a package
* protected method.
*/
class WebtoonLayoutManager(context: Context) : LinearLayoutManager(context) {

/**
* Extra layout space is set to half the screen height.
*/
private val extraLayoutSpace = context.resources.displayMetrics.heightPixels / 2
class WebtoonLayoutManager(context: Context, private val extraLayoutSpace: Int) : LinearLayoutManager(context) {

init {
isItemPrefetchEnabled = false
Expand All @@ -27,6 +22,7 @@ class WebtoonLayoutManager(context: Context) : LinearLayoutManager(context) {
/**
* Returns the custom extra layout space.
*/
@Deprecated("Deprecated in Java")
override fun getExtraLayoutSpace(state: RecyclerView.State): Int {
return extraLayoutSpace
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,15 @@ class WebtoonViewer(
*/
private val frame = WebtoonFrame(activity)

/**
* Distance to scroll when the user taps on one side of the recycler view.
*/
private val scrollDistance = activity.resources.displayMetrics.heightPixels * 3 / 4

/**
* Layout manager of the recycler view.
*/
private val layoutManager = WebtoonLayoutManager(activity)
private val layoutManager = WebtoonLayoutManager(activity, scrollDistance)

/**
* Configuration used by this viewer, like allow taps, or crop image borders.
Expand All @@ -77,11 +82,6 @@ class WebtoonViewer(
// KMK <--
)

/**
* 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.
*/
Expand All @@ -95,6 +95,7 @@ class WebtoonViewer(
.threshold

init {
recycler.setItemViewCacheSize(RecyclerViewCacheSize)
recycler.isVisible = false // Don't let the recycler layout yet
recycler.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
recycler.isFocusable = false
Expand Down Expand Up @@ -409,3 +410,5 @@ class WebtoonViewer(
)
}
}

private const val RecyclerViewCacheSize = 4

0 comments on commit d584428

Please sign in to comment.