在RecyclerView中以指数方式提高滚动速度? (耐磨)

时间:2016-01-20 08:51:06

标签: android wear-os android-recyclerview

[背景:在可穿戴设备上]

假设您有一个包含1000个项目的RecyclerView。

你想从第50项到第500项。

我希望用户按通常的方式滚动每个项目,但如果他继续快速滚动 - 我希望RecyclerView以指数方式开始滚动更快。

E.g。

首先,它可能会在项目之间滚动,例如:0 -> 1 -> 2 -> 3 ...

随着用户滚动越来越快:3 -> 6 -> 9 -> 12 ...

这一直在继续:12 -> 24 -> 36 -> 48 ......

这可能吗?我该怎么做?非常感谢。

1 个答案:

答案 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);
    }
}