在 RecyclerView 中以指数方式增加滚动速度? (可穿戴)

Exponentially increase scrolling speed in a RecyclerView? (Wearable)

[上下文:在可穿戴设备上]

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

您想从第 50 项转到第 500 项。

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

例如

起初它可能会从一个项目滚动到另一个项目,例如:0 -> 1 -> 2 -> 3 ...

随着用户滚动的时间越来越长:3 -> 6 -> 9 -> 12 ...

这种情况一直持续下去:12 -> 24 -> 36 -> 48 ...

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

我喜欢用简单的方法来解决看似复杂的问题。只需覆盖自定义 RecyclerView class 中的 fling 方法(在我的例子中是 WearableListView - 它又扩展了 RecyclerView)。这将 increase/decrease 滚动列表的速度,并且随着用户滚动而增加此速度将实现我正在寻找的确切逻辑!希望对你也有帮助。

public class DynamicWearableListView extends WearableListView {

    //Constructors

    @Override
    public boolean fling(int velocityX, int velocityY) {
        velocityY *= mVelocityMultiplier;
        return super.fling(velocityX, velocityY);
    }
}