计算RecyclerView当前的滑动距离

本文详述了在Android项目中,如何精确计算RecyclerView的滑动距离以实现头部透明度随滑动变化的效果。针对常见方法存在的问题,如`dx`和`dy`、`computeHorizontalScrollOffset()`的局限性,提出了通过滑动百分比和自定义LayoutManager结合`computeVerticalScrollOffset`来有效计算滑动距离的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

终结计算RecyclerView的滑动距离问题

因项目需要,需要根据列表即时的滑动距离计算头部的透明度达到滑动改变透明度的效果。 但是通过几种常见的滑动距离计算方法都有坑所在,故评价并记录一下调研rv的滑动距离的几种方法;

首先,都是通过 RecyclerView#addOnScrollListener 的方法监听rv的滑动;

最常用的方法 dx,dy方法

通过定义一个全局变量,记录所有滑动的距离,比较阈值计算逻辑; 坑很多;如列表突变,长列表变短列表,无法知道滑动距离;

RecyclerView#computeHorizontalScrollOffset()

通过rv提供在竖直或者水平的范围内 计算滑动条偏移距离 来计算当前rv的滑动距离;不过局限是系统计算的是平均距离,所以只适用于高度或宽度相等的item情况下;

其他的方法要不过于复杂,要不就是有很多问题,下面提供下实测过后可用的其他解决方法:

computeVerticalScrollOffset 系列方法的组合使用

int offset = recyclerView.computeVerticalScrollOffset();  //当前滑动条在range中的偏移量
int extent = recyclerView.computeVerticalScrollExtent();// 计算滑动条的长度
int range = recyclerView.computeVerticalScrollRange();//计算滑动条的总共滑动范围range;

int percentage = (int)(100.0 * offset / (float)(range - extent));

//可计算当前rv的滑动百分比;
Log.i("RecyclerView, "scroll percent
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值