利用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滑动的距离、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)