android RecyclerView四种滑动方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android RecyclerView四种滑动方式相关的知识,希望对你有一定的参考价值。

参考技术A 我们使用recyclerview滑动最多的效果就是比如通讯录右边有字母,然后点击某个字母,那个字母就显示在最上面,这样的效果主要当通讯录里面联系人太多了,不好查找,还要用户一个个去翻动,提高了效率.
这里说的四种是自己总结的,分别是:scrollBy(),scrollToPosition(),smoothScrollToPosition(),还有一个是LinearLayoutManager中的scrollToPositionWithOffset()

这个是每个View都有的方法,移动的是其内容,

这个是移动到可见范围内,是瞬间完成的,给人感觉很生硬,比如:

表示第20个item条目在屏幕可见范围内,但不是第20个条目在屏幕可见的最上面的.

和scrollToPosition() 效果是一样的,只是不是瞬间完成的,我们看到方法前面有个smooth单词就知道了,

这个才是真正定位到某个条目在屏幕可见范围内.

Android Recyclerview 监听滑动状态和滑动距离

计算滑动距离

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() 
            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) 
                super.onScrolled(recyclerView, dx, dy);
                Log.d(TAG,getScollYDistance()+"");
            
);
    public int getScollYDistance() 
        LinearLayoutManager layoutManager = (LinearLayoutManager) rvHomeHouse.getLayoutManager();
        int position = layoutManager.findFirstVisibleItemPosition();
        View firstVisiableChildView = layoutManager.findViewByPosition(position);
        int itemHeight = firstVisiableChildView.getHeight();
        return (position) * itemHeight - firstVisiableChildView.getTop();
    

监听滑动状态

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() 
            @Override
            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) 
                super.onScrollStateChanged(recyclerView, newState);
                switch (newState)
                    case RecyclerView.SCROLL_STATE_DRAGGING:
                        Log.d("wangrui","正在拖拽");
                        break;
                    case RecyclerView.SCROLL_STATE_IDLE:
                        Log.d("wangrui","滑动停止");
                        break;
                    case RecyclerView.SCROLL_STATE_SETTLING:
                        Log.d("wangrui","惯性滑动中");
                        break;
                
            
                        @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) 
                super.onScrolled(recyclerView, dx, dy);
                /*每次滑动必定调用这里*/
            

以上是关于android RecyclerView四种滑动方式的主要内容,如果未能解决你的问题,请参考以下文章

Android recyclerview 滑动会自动回到顶部?

android recyclerview怎么设置每次只能滑动一页

android recyclerview 是不是能上滑动

Android教程2020 - RecyclerView获取滑动距离

Android Recyclerview 监听滑动状态和滑动距离

Android Recyclerview 监听滑动状态和滑动距离