前言
RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。例如列表横向,纵向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。
SnapHelper是一个抽象类,官方提供了一个LinearSnapHelper的子类,可以让RecyclerView滚动停止时相应的Item停留中间位置。25.1.0版本中官方又提供了一个PagerSnapHelper的子类,可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示。
ListView/RecyclerView滚动事件监听
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;// 手指接触状态
* @param state
*/
@Override
public void onScrollStateChanged(int state) {
switch (state) {
case RecyclerView.SCROLL_STATE_IDLE:
break;
}
super.onScrollStateChanged(state);
}
scrollVerticallyBy:y轴滚动
@Override
public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
this.mDrift = dy;
return super.scrollVerticallyBy(dy, recycler, state);
}
mDrift判断移动方向:mDrift>0向上移动,mDrift<0向下移动。
OnChildAttachStateChangeListener
实现这个接口重写onChildViewAttachedToWindow方法,在ListView/RecyclerView中,当Item添加进来了 调用这个方法。
onChildViewDetachedFromWindow Item退出调用这个方法。
直接看效果:
x向上滑动
向下滑动
代码:https://github.com/yangxiansheng123/FFmpegPlayVideo
可参考:
1.https://www.jianshu.com/p/e54db232df62
2.https://blog.csdn.net/xx326664162/article/details/49617013
3..GSYVideoPlayer : https://github.com/CarGuo/GSYVideoPlayer