前言
RecyclerView在24.2.0版本中新增了SnapHelper這個輔助類,用于輔助RecyclerView在滾動結(jié)束時將Item對齊到某個位置。例如列表橫向,縱向滑動時,很多時候不會讓列表滑到任意位置,而是會有一定的規(guī)則限制,這時候就可以通過SnapHelper來定義對齊規(guī)則了。
SnapHelper是一個抽象類,官方提供了一個LinearSnapHelper的子類,可以讓RecyclerView滾動停止時相應的Item停留中間位置。25.1.0版本中官方又提供了一個PagerSnapHelper的子類,可以使RecyclerView像ViewPager一樣的效果,一次只能滑一頁,而且居中顯示。
ListView/RecyclerView滾動事件監(jiān)聽
1.onScrollStateChanged 用于監(jiān)聽ListView/RecyclerView滑動狀態(tài)的變化
2.onScroll 用于監(jiān)聽ListView/RecyclerView屏幕滾動
3.scrollVerticallyBy用于監(jiān)聽ListView/RecyclerView屏幕滾動方向
?? onScrollStateChanged
/**
? ? * OnScrollListener.SCROLL_STATE_FLING; //屏幕處于甩動狀態(tài)
? ? ? OnScrollListener.SCROLL_STATE_IDLE; //停止滑動狀態(tài)
? ? OnScrollListener.SCROLL_STATE_TOUCH_SCROLL;// 手指接觸狀態(tài)
*@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
實現(xiàn)這個接口重寫onChildViewAttachedToWindow方法,在ListView/RecyclerView中,當Item添加進來了 調(diào)用這個方法。
onChildViewDetachedFromWindow Item退出調(diào)用這個方法。
直接看效果:
x向上滑動

向下滑動

代碼:https://github.com/yangxiansheng123/FFmpegPlayVideo
個人一般喜歡在博客發(fā)表文章,大家喜歡的話,歡迎關(guān)注我的博客:https://blog.csdn.net/u014133119