[背景:在可穿戴设备上]
假设您有一个包含1000个项目的RecyclerView。
你想从第50项到第500项。
我希望用户按通常的方式滚动每个项目,但如果他继续快速滚动 - 我希望RecyclerView以指数方式开始滚动更快。
E.g。
首先,它可能会在项目之间滚动,例如:0 -> 1 -> 2 -> 3
...
随着用户滚动越来越快:3 -> 6 -> 9 -> 12
...
这一直在继续:12 -> 24 -> 36 -> 48
......
这可能吗?我该怎么做?非常感谢。
答案 0 :(得分:3)
我喜欢它,当有一个简单的解决方案,似乎是一个复杂的问题。只需覆盖自定义RecyclerView类中的fling方法(在我的例子中是WearableListView - 它反过来扩展了RecyclerView)。这将增加/减少滚动列表的速度,并在用户滚动时增加此值将实现我正在寻找的确切逻辑!希望它也能帮到你。
public class DynamicWearableListView extends WearableListView {
//Constructors
@Override
public boolean fling(int velocityX, int velocityY) {
velocityY *= mVelocityMultiplier;
return super.fling(velocityX, velocityY);
}
}