前言
RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。例如列表横向,纵向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。
SnapHelper是一个抽象类,官方提供了一个LinearSnapHelper的子类,可以让RecyclerView滚动停止时相应的Item停留中间位置。25.1.0版本中官方又提供了一个PagerSnapHelper的子类,可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示。
1.onScrollStateChanged 用于监听ListView/RecyclerView滑动状态的变化
2.onScroll 用于监听ListView/RecyclerView屏幕滚动
3.scrollVerticallyBy用于监听ListView/RecyclerView屏幕滚动方向
onScrollStateChanged
/**
* OnScrollListener.SCROLL_STATE_FLING; //屏幕处于甩动状态
OnScrollListener.SCROLL_STATE_IDLE; //停止滑动状态
OnScrollListener.SCROLL_STATE_TOUCH_SCROLL;// 手指接触状态
*@paramstate
*/
@Override
publicvoidonScrollStateChanged(intstate){
switch(state) {
caseRecyclerView.SCROLL_STATE_IDLE:
break;
}
super.onScrollStateChanged(state);
}
scrollVerticallyBy:y轴滚动
@Override
publicintscrollVerticallyBy(intdy, RecyclerView.Recycler recycler, RecyclerView.State state){
this.mDrift = dy;
returnsuper.scrollVerticallyBy(dy, recycler, state);
}
mDrift判断移动方向:mDrift>0向上移动,mDrift<0向下移动。
OnChildAttachStateChangeListener
实现这个接口重写onChildViewAttachedToWindow方法,在ListView/RecyclerView中,当Item添加进来了 调用这个方法。
onChildViewDetachedFromWindow Item退出调用这个方法。
直接看效果:
x向上滑动
向下滑动
代码:https://github.com/yangxiansheng123/FFmpegPlayVideo
个人一般喜欢在博客发表文章,大家喜欢的话,欢迎关注我的博客:https://blog.csdn.net/u014133119