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教程2020 - RecyclerView获取滑动距离