Match extra layout space with scroll distance (mihonapp/mihon#1076)
And increase recycler item view cache size. (cherry picked from commit a3dfd2efe6ace7a2a4d79bd09fb1a729989f1094)
This commit is contained in:
parent
2ee0fd4415
commit
d5844286b9
2 changed files with 11 additions and 12 deletions
|
|
@ -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
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
*/
|
||||
|
|
@ -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
|
||||
|
|
@ -409,3 +410,5 @@ class WebtoonViewer(
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
private const val RecyclerViewCacheSize = 4
|
||||
|
|
|
|||
Loading…
Reference in a new issue