【Android】RecyclerView 辅助类 SnapHelper总结

本文介绍了SnapHelper在RecyclerView中的作用,它辅助RecyclerView在滚动结束时将Item对齐。讲解了LinearSnapHelper和PagerSnapHelper的用法,以及SnapHelper的attachToRecyclerView(), findTargetSnapPosition(), findSnapView()等关键方法的原理。还详细分析了SnapHelper的源码,包括attachToRecyclerView(), destroyCallbacks(), setupCallbacks(), snapToTargetExistingView()等方法的实现逻辑。" 138479194,7337247,深度学习驱动的机器翻译实战,"['深度学习', '神经网络', '机器翻译', 'Python', '架构设计']
摘要由CSDN通过智能技术生成

1、SnapHelper说明

    SnapHelper是个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。SnapHelper是个抽象类,官方提供了LinearSnapHelper、PagerSnapHelper子类。例如LinearSnapHelper可以让RecyclerView滚动停止时相应的Item停留中间位置。PagerSnapHelper可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示。

2、SnapHelper使用

new LinearSnapHelper().attachToRecyclerView(mRecyclerView);
//或者
new PagerSnapHelper().attachToRecyclerView(mRecyclerView);

创建SnapHelper对象之后调用attachToRecyclerView()附着到对应的RecyclerView对象上就可以了。

3、Fling操作

Fling操作从手指离开屏幕瞬间被触发,在滚动停止时结束。手指在屏幕上滑动RecyclerView然后松手,RecyclerView中的内容会顺着惯性继续往手指滑动的方向继续滚动直到停止,这个过程叫做Fling。

4、SnapHelper三个抽象方法说明

(1)

public abstract int findTargetSnapPosition(LayoutManager layoutManager, int velocityX, int velocityY);

说明:该方法会根据触发Fling操作的速率(参数velocityX和参数velocityY)来找到RecyclerView需要滚动到哪个位置,该位置对应的ItemView就是那个需要进行对齐的列表项。我们把这个位置称为targetSnapPosition,对应的View称为targetSnapView。如果找不到targetSnapPosition,就返回RecyclerView.NO_POSITION。

(2)

public abstract View findSnapView(LayoutManager layoutManager);

说明:该方法会找到当前layoutManager上最接近对齐位置的那个view,该view称为SanpView,对应的position称为SnapPosition。如果返回null,就表示没有需要对齐的View,也就不会做滚动对齐调整。

(3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值