Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Match extra layout space with scroll distance #1076

Merged
merged 1 commit into from
Aug 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -47,10 +47,15 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
*/
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 @@ -62,11 +67,6 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
*/
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.
*/
Expand All @@ -79,6 +79,7 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
.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 @@ -359,3 +360,5 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
)
}
}

private const val RecyclerViewCacheSize = 4