记录ScrollView获取手势滑动距离

记录ScrollView获取手势滑动距离,第1张

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滚动的距离等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9651511.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存