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

获取RecyclerView滑动的距离。

Android教程2020 - 系列总览
本文链接

前面我们已经用RecyclerView显示一些数据
本文演示如何获取RecyclerView的滑动距离。

要实现这个功能,需要给RecyclerView添加滑动时监听RecyclerView.OnScrollListener

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        Log.d(TAG, "onScrolled: dy: " + dy);
    }
});

RecyclerView.OnScrollListener是一个抽象类,我们可以选择性地实现它的方法。
onScrolled方法的dy表示的是每一次y方向上的相对滑动距离。向下滑动是正数,向上滑动是负数。

可以添加一个变量来累计滑动的距离。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    int mmRvScrollY = 0; // 列表滑动距离

    @Override
    public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        mmRvScrollY += dy;
        Log.d(TAG, "onScrolled: mmRvScrollY: " + mmRvScrollY + ", dy: " + dy);
    }
});

每次滑动都累加到mmRvScrollY中。
打印log

onScrolled: mmRvScrollY: 3167, dy: 3
onScrolled: mmRvScrollY: 3169, dy: 2
onScrolled: mmRvScrollY: 3167, dy: -2
onScrolled: mmRvScrollY: 3155, dy: -12

建议同时给adapter加个registerAdapterDataObserver,监听插入/删除/移动,自己加减前面记录的dy滚动值。

工程放这里: https://github.com/AnRFDev/Tutorial2020

相关阅读
RecyclerView - 使用入门
RecyclerView点击事件 - 如何设置点击事件
RecyclerView示例 - 实际使用
RecyclerView显示多种item

原文地址:https://www.cnblogs.com/rustfisher/p/12271959.html

时间: 2024-10-31 21:00:54

Android教程2020 - RecyclerView获取滑动距离的相关文章

Android教程2020 - RecyclerView使用入门

本文介绍RecyclerView的使用入门.这里给出一种比较常见的使用方式. Android教程2020 - 系列总览 本文链接 想必读者朋友对列表的表现形式已经不再陌生.手机上有联系人列表,文件列表,短信列表等等. 本文讲述的是在Android开发中用RecyclerView来实现列表效果. 使用步骤 引入RecyclerView 在app的build.gradle文件中添加引用.我们使用的是androidx包. dependencies { // ... implementation 'an

Android教程2020 - RecyclerView响应点击

本文介绍RecyclerView设置点击的方法.这里给出比较常见的使用方式. Android教程2020 - 系列总览 本文链接 前面我们已经知道如何用RecyclerView显示一列数据. 用户点击某个item时,app可以做出相应的反应.这里我们使用添加点击监听器的方式来实现这个效果. Android开发中,监听器模式使用十分广泛.最先被开发者认识到的应该是Button的点击事件监听. 设计并添加监听器 首先设计监听器.OnItemClickListener1接口.实际开发中,接口的名字可以

Android教程2020 - RecyclerView显示多种item

Android教程2020 - 系列总览 本文链接 前面我们已经用RecyclerView显示一些数据.也知道如何获取滑动的距离. 前面我们的列表中显示的都是同类数据.如果要在一个列表中显示不同类别的数据,该怎么做呢? RecyclerView已经有应对这类场景的能力,本文描述如何用RecyclerView显示多种内容(item). 综述 这个例子中涉及到的类和文件比较多. 放在同一个包里的文件 BaseMultiData.java BaseVH.java ItemTypeDef.java Mu

Android Scrollview嵌套RecyclerView导致滑动卡顿问题解决

一个比较长的界面一般都是Scrollview嵌套RecyclerView来解决.不过这样的UI并不是我们开发人员想看到的,实际上嵌套之后.因为Scrollview和RecyclerView都是滑动控件.会有一点滑动上的冲突.导致滑动起来有些卡顿.这个时候.我们重写一下LayoutManager就行了 例如: [java] view plain copy LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getAct

Android实现浮层的上下滑动(支持内部加入View)

前言 我K.今天竟然是情人节.对于资深的单身狗来说,简直是个噩耗,今天注定是各种秀恩爱.心塞中.. .. 话题到此结束,管他什么情人节,今天给大家带来的是一个浮层的上下滑动,浮层滑动时分三种状态:所有显示.显 示一半.隐藏.可在浮层中加入ListView,GirdView,ImageView等等View. 详细的效果看以下的GIF图: 效果解说 1.在上面的浮层中我们能够看到存放着一个ListView.并能进行上下滚动,也就是说浮层的Touch事件须要在适 当的时候进行拦截,不传递给子View.

Android实现浮层的上下滑动(支持内部添加View)

前言 我K,今天居然是情人节,对于资深的单身狗来说,简直是个噩耗,今天注定是各种秀恩爱,心塞中.... 话题到此结束,管他什么情人节,今天给大家带来的是一个浮层的上下滑动,浮层滑动时分三种状态:全部显示.显 示一半.隐藏.可在浮层中添加ListView,GirdView,ImageView等等View. 具体的效果看下面的GIF图: 效果讲解 1.在上面的浮层中我们可以看到存放着一个ListView,并能进行上下滚动,也就是说浮层的Touch事件需要在适 当的时候进行拦截,不传递给子View.这

Android最新组件RecyclerView,替代ListView

转载请注明出处:http://blog.csdn.net/allen315410/article/details/40379159 万众瞩目的android最新5.0版本号不久前已经正式公布了,对于我这样对新事物不感冒的人来说,自然也是会关注的,除了新的android5.0带来的新的UI设计和用户体验之外,最让android程序猿感兴趣的是5.0版本号的sdk和一大堆新的API.5.0据说是额外添加或者改动了5000个API,新增了一些新的组件,以下介绍的RecyclerView就是当中之中的一

android 横向list特效——规格滑动

首先,这个是在github开源项目HorizontalListView上作得修改,这个开源项目的下载地址我忘记了,贴一个引用网址:http://code.eoe.cn/233. 首先来说一下什么叫规格滑动: 上图就是规格滑动的合法状态:恰好显示一定数量的item,并且没有item处于一半显示一半在屏幕外的状态.这样说还不是很清楚,那么再贴一张非法状态: 所谓规格滑动,就是每次滑动结束之后必然停留在合法状态,如果是非法状态,则会自动滑动到最近的合法状态位置上.一次滚动之后ListView要么没有位

[转] Android PullToRefresh扩展RecyclerView

转载请标明出处: http://blog.csdn.net/xuehuayous/article/details/50387089本文出自:[Kevin.zhou的博客] 前言:接着上一篇<AndroidPullToRefresh 分析之三.响应手势事件>,这一篇主要分析如何扩展PullToRefreshBase,来创建各式各样的刷新加载内容区域. 一. 回顾 我们在第二篇<PullToRefresh 分析之二.UI结构>中提出了四个问题,只是简单粗暴的说了怎么解决,没有去看源码,