如何获取 RecyclerView 的滑动距离

如何获取 RecyclerView 的滑动距离,第1张

利用OnScrollListener

totalDy的确保存了 RecyclerView 的滑动距离,但是当我向下滑动 RecyclerView ,之后插入/删除/移动 Item 的时候,totalDy 就变得不精确了;比如删除或者插入新的Item,那么totalDy就不能再回归到 0了。

解决办法:监听RecyclerView的addOnScrollListener后自己记录onScrolled的dy,同时给adapter加个registerAdapterDataObserver,监听插入/删除/移动,自己加减前面记录的dy滚动值。

1、有两种方法:

(1)可参照:

switch (action) {

case MotionEventACTION_DOWN:

DownX = eventgetX();//float DownX

DownY = eventgetY();//float DownY

currentMS = SystemcurrentTimeMillis();//long currentMS 获取系统时间

break;

case MotionEventACTION_MOVE:

float moveX = eventgetX() - DownX;//X轴距

float moveY = eventgetY() - DownY;//y轴距离

long moveTime = SystemcurrentTimeMillis() - currentMS搜索;//移动时间

break;

case MotionEventACTION_UP:

break;}

(2)按照以下原理:

滑动其实只是不停的重绘图像,造成滑动的效果。

滑动其实是处理手的触屏事件,在你的View里有onTouch事件,里面会MotionEvent对象,里面保存当前手的位置坐标,你根据这个坐标计算手滑动的距离,一般是在收到ACTION_DOWN时保存按下的位置,然后ACTION_MOVE会不停的上报,计算得出滑动距离。

2、RecyclerView简介:

RecyclerView是v7的一个新控件。在v721+包中,是一个用来展示大量数据的组件,或者说,就是ListView的改善版本。RecyclerView本质上是以适配器为核心。缓存viewHolder,view包含在viewHolder内。自推出以来广受Android程序爱好者的推崇,然而不得不说这个控件存在着一个比较严重的问题,就是滑动的时候会有不可容忍的卡顿现象出现。

3、RecyclerView卡顿现象解决方法:

将耗时的 *** 作放到recyclerviewsetAdapter(adapter)之前运行,运行完后再将需要的参数传入Adapter里,此处重写一个adapter类继承Adapter就可以了。解决后运行,滑动恢复了流畅。

以上就是关于如何获取 RecyclerView 的滑动距离全部的内容,包括:如何获取 RecyclerView 的滑动距离、如何获取Android RecyclerView滑动的距离、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9767276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存