
locationInView : 手指在视图上的位置(x,y)就是手指在视图本身坐标系的位置。
velocityInView: 手指在视图上移动的速度(x,y), 正负也是代表方向,值得一体的是在绝对值上|x| > |y| 水平移动, |y|>|x| 竖直移动。
-
然而compute方法计算出的并不是滑动的精确距离,stackOverflow上有答案解释其为 item 的平均高度 可见 item 数目。
尝试的第三个方法是令
totalDy = recyclerViewgetChildAt(0)getTop();
依靠第一个item的滑动距离来进行动画的设置,但是根据该方法得出的 totalDy 在滑动到一定程度后清零,猜测是因为真正的第 0 个 Child 被 Recycle 掉了。
所以,请问该如何正确地获取 RecyclerView 的滑动距离呢?
添加评论
分享
你其实可以这样实现,在与scrollview同级建个和中部标签选卡一样的布局,开始的时候设置成隐藏ViewGONE,当scrollview滚动到中部位置的时候让它显示出来就OK了,当小于中部位置时再把它隐藏。
滑动到一定程度后清零,猜测是因为 getChildAt(0) 获得的是第一个可见view
用LinearLayoutManager的recyclerview测试了一下确实如此。
如果LayoutManager用的是LinearLayoutManager 可以用下面的办法:
/
还能向下滑动多少
@return
/
private int getDistance() {
LinearLayoutManager layoutManager = (LinearLayoutManager) getLayoutManager();
View firstVisibleItem = thisgetChildAt(0);
int firstItemPosition = layoutManagerfindFirstVisibleItemPosition();
int itemCount = layoutManagergetItemCount();
int recyclerviewHeight = thisgetHeight();
int itemHeight = firstVisibleItemgetHeight();
int firstItemBottom = layoutManagergetDecoratedBottom(firstVisibleItem);
return (itemCount - firstItemPosition - 1) itemHeight - recyclerviewHeight + firstItemBottom;
}
已滑动的距离:
private int getScrolledDistance() {
LinearLayoutManager layoutManager = (LinearLayoutManager) getLayoutManager();
View firstVisibleItem = thisgetChildAt(0);
int firstItemPosition = layoutManagerfindFirstVisibleItemPosition();
int itemHeight = firstVisibleItemgetHeight();
int firstItemBottom = layoutManagergetDecoratedBottom(firstVisibleItem);
return (firstItemPosition + 1) itemHeight - firstItemBottom;
}
以上就是关于记录ScrollView获取手势滑动距离全部的内容,包括:记录ScrollView获取手势滑动距离、如何获取Android RecyclerView滑动的距离、怎么实时获取scrollview滚动的距离等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)