相关疑难解决方法(0)

在RecyclerView中滚动滚动

我正在尝试将新RecyclerView类用于我希望组件在滚动时捕捉到特定元素的场景(将旧版Android Gallery作为具有中心锁定项的此类列表的示例).

这是我到目前为止采取的方法:

我有一个接口,ISnappyLayoutManager它包含一个方法,getPositionForVelocity它计算视图应该在给定初始fling速度的情况下结束滚动的位置.

public interface ISnappyLayoutManager {
    int getPositionForVelocity(int velocityX, int velocityY);  
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个类,它以这样的方式SnappyRecyclerView子类化RecyclerView并覆盖它的fling()方法,以便将视图推送到正确的数量:

public final class SnappyRecyclerView extends RecyclerView {

    /** other methods deleted **/

    @Override
    public boolean fling(int velocityX, int velocityY) {
        LayoutManager lm = getLayoutManager();

        if (lm instanceof ISnappyLayoutManager) {
            super.smoothScrollToPosition(((ISnappyLayoutManager) getLayoutManager())
                    .getPositionForVelocity(velocityX, velocityY));
        }
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于几个原因,我对这种方法不是很满意.首先,似乎与"RecyclerView"的哲学相反,它必须将其子类化以实现某种类型的滚动.其次,如果我只想使用默认值LinearLayoutManager,这会变得有点复杂,因为我必须弄乱它的内部,以便了解它的当前滚动状态并精确计算滚动到的位置.最后,这甚至没有处理所有可能的滚动方案,就像你移动列表然后暂停然后举起手指一样,没有发生任何事件(速度太低),所以列表仍然处于中途位置.这可以通过添加一个on scroll状态监听器来处理RecyclerView,但也感觉非常hacky.

我觉得我必须遗漏一些东西.有一个更好的方法吗?

android

69
推荐指数
8
解决办法
5万
查看次数

Android:控制平滑滚动回收器视图

我正在使用Recyclerview和CardView.我知道如何控制列表视图的速度.但不适用于Recyclerview.

我在找到的类名SmoothScroll中搜索了很多.怎么用?我不知道!现在,Recyclerview默认滚动速度很快.

更新:

我总结吉尔回答与

android android-support-library android-5.0-lollipop android-recyclerview

51
推荐指数
3
解决办法
6万
查看次数