SnapHelper实现RecyclerView滑动对齐效果

2017-10-25  本文已影响1347人  总是说下次

简介

在列表滑动浏览,有时希望当滑动停止某个 ItemView 时可以停留在屏幕中央吸引用户的焦点,或者在边缘显示半个提示用户还有更多内容。RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类来实现该效果。

SnapHelper的主作用就是寻找离目标位置最近的ItemView作为SnapView并滑动到目标位置。

SnapHelper类提供了三个抽象方法,方便子类实现不同的对齐效果:

查找当前离目标最近的ItemView

public abstract View findSnapView(LayoutManager layoutManager);

根据加速度返回需要对齐ItemView的位置,主要用于fling 操作

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

返回targetView 对齐到指定目标位置的x,y轴上的偏移量。

public abstract int[] calculateDistanceToFinalSnap(@NonNull LayoutManager layoutManager,
            @NonNull View targetView)

与RecyclerView交互

SnapHelper.attachToRecyclerView() 方法中调用了 RecyclerView.addOnScrollListener() 和RecyclerView.setOnFlingListener()两个方法监听RecyclerView的滑动事件。

相关知识点

遗留问题

上一篇 下一篇

猜你喜欢

热点阅读