Is it possible to snap every X views?
AndroidDeveloperLB opened this issue · 16 comments
For example, suppose I have tens of views to scroll through. If the user scrolled x/2 and a bit more, it will get to the X view.
This would require another custom SnapHelper. I don't have any plans to implement this, though.
Too bad. Thanks anyway
@AndroidDeveloperLB , I'm adding something similar in 2.2.0. It'll not be exactly snapping on X views, but instead limiting the fling distance.
You can check this out here: https://github.com/rubensousa/RecyclerViewSnap/blob/develop/gravitysnaphelper/src/main/java/com/github/rubensousa/gravitysnaphelper/GravitySnapHelper.java#L293
You'll also be able to customise the snap speed:
https://github.com/rubensousa/RecyclerViewSnap/blob/develop/gravitysnaphelper/src/main/java/com/github/rubensousa/gravitysnaphelper/GravitySnapHelper.java#L331
Check this issue: #29
Why close it if it's not the same?
Can you please post a video of what was added?
It's not released yet, but it's in the develop branch if you want to check it out.
I closed the issue again since it's not really what you asked for, although it's similar. That's why I linked the other issue.
Here's a preview: https://drive.google.com/file/d/1vbJ5jz39cCcVgWIeGRv5vWF5ESOglDCr/view
It's not the same?
But if it's not the same, why close it?
I'm confused.
I closed it since I don't have plans to work on this specific feature at the moment. You closed this the last time because of that same reason
Sorry I don't remember.
Anyway, you added something that seem what I wrote, no? What's the difference between what I requested and what you've added?
You wanted to snap every X views, however I've added support for limiting the maximum fling according to a value you can set through: https://github.com/rubensousa/RecyclerViewSnap/blob/decfb4102dcd8d741cce65f88e2d82e768d840b7/gravitysnaphelper/src/main/java/com/github/rubensousa/gravitysnaphelper/GravitySnapHelper.java#L274
And https://github.com/rubensousa/RecyclerViewSnap/blob/decfb4102dcd8d741cce65f88e2d82e768d840b7/gravitysnaphelper/src/main/java/com/github/rubensousa/gravitysnaphelper/GravitySnapHelper.java#L289
Limiting snapping on every X view is different, since you may have views with different width.
Oh right.
Sorry for that.
Why not consider adding this functionality ?
It could be nice, for example, for a week view of a calendar app (shows a single week each time)
Because it requires time I don't have at the moment. However, I could leave this open so that anyone else could work on this instead. Meanwhile, If you need something similar, you could use the other approach.
OK please let it be open, then.
@rubensousa
Hello! Thanks for the lib it's very helpful.
I have a question about the feature "every x" I understand that you provided some another feature, but I try to use it and don't have a profit.
Here is my config:
val snapHelper = GravitySnapHelper(Gravity.CENTER).apply {
scrollMsPerInch = 1f
maxFlingDistance = 20.dp.toPx()
maxFlingSizeFraction = 0.0001f
}
snapHelper.attachToRecyclerView(recyclerView)
snapHelper.scrollToPosition(Int.MAX_VALUE/2)
My view in XML:
<com.github.rubensousa.gravitysnaphelper.GravitySnapRecyclerView
android:id="@+id/camera_type_rv"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_marginStart="40dp"
app:snapMaxFlingSizeFraction="0.1"
android:layout_marginEnd="40dp"
app:snapGravity="center"
android:layout_marginBottom="100dp"
android:animateLayoutChanges="false"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:itemCount="3" />
My goal is to go through the list one by one.
But if it's impossible by this lib, I try to set slow speed of scrolling and it doesn't work with method scrollMsPerInch
.
This is my current implementation:
https://drive.google.com/file/d/1GuraO_nDQR8IE1jzjZyZ51eyiOzfXlOb/view?usp=sharing
That is what I want to have:
https://drive.google.com/file/d/19k8MFVK69Xiorw1LErUgLt7-wEAQ0fat/view?usp=sharing
@albka1986 for that use case, you need custom touch event handling. It's not possible to scroll one item only. For that, you need PagerSnapHelper. Check this StackOverflow question: https://stackoverflow.com/questions/53483268/how-to-have-recyclerview-snapped-to-center-and-yet-be-able-to-scroll-to-all-item/53510142#53510142
Thanks