Android RecyclerView(九)滑动监听

1 RecyclerView 的滑动监听

1.1 RecyclerView 设置滑动监听

mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {

@Override

public void onScrollStateChanged(RecyclerView recyclerView, int newState) {

super.onScrollStateChanged(recyclerView, newState);

}

@Override

public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

super.onScrolled(recyclerView, dx, dy);

}

});

1.2 滑动监听回调方法说明

1.3 判断RecyclerView的滑动方向

onScrollStateChanged(RecyclerView recyclerView, int newState)这个方法在RecyclerView的滑动状态改变时会调用

对应的参数 newState 有三种状态 ,官方这样描述

/** * The RecyclerView is not currently scrolling. *@see #getScrollState() */

public static final int SCROLL_STATE_IDLE = 0;

/** * The RecyclerView is currently being dragged by outside input such as user touch input. *@see #getScrollState() */

public static final int SCROLL_STATE_DRAGGING = 1;

/** * The RecyclerView is currently animating to a final position while not under * outside control. *@see #getScrollState() */

public static final int SCROLL_STATE_SETTLING = 2;

也就是说,newState=0时,RecyclerView在滑动状态中

newState=1时,RecyclerView在停止状态中

newState=2时,RecyclerView滑动中的条目显示位置发生了变化,或者说是当前选中的条目位置发生的变化

onScrolled(RecyclerView recyclerView, int dx, int dy ) 这个方法在RecyclerView开始滑动时实时回调

参数dx dy分别是RecyclerView在滑动过程中,在x轴方向(横向滑动)与Y轴方向(纵向滑动)的偏移量

dx>0 向右滑动

dx<0 向左滑动

dy<0 向上滑动

dy>0 向下滑动

2 RecyclerView 的滑动滑动距离获取

可以在RecyclerView的滑动监听中调用此方法,以不断的来获取RecyclerView的滑动距离

//mMTrainLinearLayoutManager 是 Recyclerview对应的布局管理者

if (mMTrainLinearLayoutManager != null) {

//获取RecyclerView当前顶部显示的第一个条目对应的索引

int position = mMTrainLinearLayoutManager.findFirstVisibleItemPosition();

//根据索引来获取对应的itemView

View firstVisiableChildView = mMTrainLinearLayoutManager.findViewByPosition(position);

//获取当前显示条目的高度

int itemHeight = firstVisiableChildView.getHeight();

//获取当前Recyclerview 偏移量

int flag = (position) * itemHeight - firstVisiableChildView.getTop();

LogUtils.d("scroll " + dx + " " + dy + " flag " + flag);

}

3 获取RecyclerView 当前页面显示的第一个条目或者最后一个条目对应的索引值

//mLinearLayoutManager 是 Recyclerview对应的布局管理者

//所有的条目个数

int itemCount1 = mLinearLayoutManager.getItemCount();

//获取当前RecyclerView显示最后一个条目的位置

int mLastVisibleItemPosition = mLinearLayoutManager.findLastVisibleItemPosition();

//获取当前RecyclerView显示的第一个条目的位置

int mFirstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition();

//获取当前RecyclerView完全显示出的最后一个条目的位置

int mLastCompletelyVisibleItemPosition = mLinearLayoutManager.findLastCompletelyVisibleItemPosition();

//获取当前RecyclerView完全显示出的第一个条目的位置

int mFirstCompletelyVisibleItemPosition = mLinearLayoutManager.findFirstCompletelyVisibleItemPosition();

android recyclerview 滚动监听,Android RecyclerView(九)滑动监听综述相关推荐

  1. android 字体滚动效果,2018-02-05 android 左右字滚动效果(跑马灯效果),能直接拿来用的...

    MarqueeView 俗名:可垂直跑.可水平跑的跑马灯 学名:可垂直翻.可水平翻的翻页公告 com.sunfusheng marqueeview 1.3.3 pom compile 'com.sun ...

  2. android webview滚动到底部,Android WebView实现网页滚动截图

    WebView 网页滚动截屏,可对整个网页进行截屏而不是仅当前屏幕哦! 注意若Web页面存在position:fixed; 的话得在调用前设置为 position:absolute; 哦,否则会出现很 ...

  3. Android RecyclerView(九)滑动监听综述

    Android RecyclerView(九)滑动监听 1 RecyclerView 的滑动监听 1.1 RecyclerView 设置滑动监听 mRecyclerView.setOnScrollLi ...

  4. Android监听左右滑删除通知,Android 滑动监听RecyclerView线性流+左右划删除+上下移动...

    废话不多说了,直接给大家贴代码了.具体代码如下所示: xmlns:tools="http://schemas.android.com/tools" android:layout_w ...

  5. android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部

    1.创建  ScrollListener 接口监听滑动距离 public interface ScrollListener {void onScrollChanged(ScrollListenerVi ...

  6. RecyclerView跳转到指定位置,RecyclerView上下滑动监听,RecyclerView滑动速度

    1.RecyclerView跳转到指定位置 只需调用recycleview的置顶方法: recyclerView.scrollToPosition(15); 如果你需要让第15item在屏幕居中,只需 ...

  7. Android 系统(188)---Android开发:ListView、AdapterView、RecyclerView全面解析

    Android开发:ListView.AdapterView.RecyclerView全面解析 目录 ListView.AdapterView.RecyclerView全面解析.png Adapter ...

  8. android 瀑布流的实现(用recyclerview的实现的)

    先看下效果图 代码的整体布局: 首先要做的就是导入v7包,这个v7的位置就在自己的sdk目录下,具体位置 我的博客说过了,这里就不再说了, 下面就是布局代码 main_activity <Rel ...

  9. Android 高级UI设计笔记20:RecyclerView 的详解之RecyclerView添加Item点击事件

    1. 引言: RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件,顺便复习一 ...

  10. android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础

    各位看官们,大家好,上一回中咱们说的是Android中UI控件之ListView优化的例子,这一回咱们说的例子是UI控件之RecyclerView.闲话休提,言归正转.让我们一起Talk Androi ...

最新文章

  1. 数据库连接池到底应该设多大?
  2. OpenCV | OpenCV哈里斯 (Harris)角点检测
  3. Java内存模型深度解析:总结--转
  4. 美团搜索中NER技术的探索与实践
  5. mysql的学习笔记
  6. leetcode 926. Flip String to Monotone Increasing | 926. 将字符串翻转到单调递增(前缀和)
  7. CMFCTabCtrl 切换页面闪烁问题
  8. 伪静态设置 html,Apache下伪静态html(URL Rewrite)的设置方法
  9. 枚举算法:完美综合式
  10. 有哪些讽刺性极强的文案?
  11. hp eva 4400存储配置手记
  12. 如果抛开 Spring,如何自己实现 AOP?面试必问!
  13. ssh框架超详细总结
  14. CSS编写格式边框与渐变内容补充
  15. g2o学习记录(1)安装和运行其下面的unit_test项目
  16. mysql视图 实验报告_数据库实验报告(视图).doc
  17. Flink实操 : 算子操作
  18. jsp的内置对象有哪些,四大作用域有哪些??
  19. 基于众包的可视化图表数据提取
  20. HDU - 2044一只小蜜蜂 一道递推题

热门文章

  1. [公告]积分算法问题改正
  2. java 天上掉东西游戏的源代码_【小游戏】前两天的小游戏终于调试成功了。。。。直接源代码...
  3. 修改 font的文本信息_C#窗体,文本框如何实现类似html的输入提示信息
  4. RecyclerView Widget 使用
  5. 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路
  6. 常用排序算法:桶排序
  7. linux下order by 报出ORDER BY clause is not in SELECT list
  8. Spring MVC接受参数的注解
  9. css常见样式命名思想
  10. How is NGINX Unit different from Apache?