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. 让我们来谈谈对Linux的认识,值得每一位运维人员深读
  2. 如何在Oracle中复制表结构和表数据
  3. Win10系列:JavaScript图形
  4. C语言优先级——取反和移位
  5. react-native-sound的使用
  6. [资料]有关MS SQL 2000安全问题
  7. 二叉树的最长的路径长度最大路径和
  8. 简单的封装axios 不包含状态码和提示
  9. ashx连接mysql_对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结
  10. python将字典作为参数传入函数
  11. WPF 列表虚拟化时的滚动方式
  12. C#相关控件使用总结
  13. jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解8---定时器中断程序示例
  14. 数论整理之费马小定理
  15. 嵌入式OS的现状、智能的物联网与未来的机器人
  16. iOS开发:获取WiFi名称(解决iOS12.0以上系统不能正常获取WiFi名称的方法)
  17. Apollo + Springboot 整合(多环境版)
  18. CentOS 7 安装 OTRS工单提交跟踪系统
  19. TPLINK WR941N V2_090803 路由器 后门
  20. VDA 6.3 2022 EN 黄皮书.最新版 汽车质量VDA6.3-2022过程审核

热门文章

  1. 【狂神说Redis】1NoSQL概述 1-1为什么使用NoSQL
  2. java去除网页中的广告和导航等信息_**css+html纯css怎样去除导航子菜单中的默认背景?**...
  3. 【unity】Vector3.AngleCrossDot
  4. 详解 undefined 与 null 的区别
  5. JavaWeb开发Filter学习
  6. Android按钮圆角样式和边框波浪线样式
  7. transition的合理运用
  8. jsp的知识略解,只作为笔记,不作为知识参考,谢谢
  9. python通用数据库连接_python-sqlalchemy 使用学习记录之基础连接数据库安装接篇...
  10. mysql io线程 原理_mysql 原理 ~ 线程与IO