IncompleteScreenBanner
一個不顯示全屏圖的banner無限自動輪播例子,利用recycleview實現類似viewpager效果
背景
其實程序猿要開發一個demo的背景,都!一!樣!
說什麼爲了社會進步,爲了挑戰自我,都!是!瞎!扯!蛋!
無非就是一個背景,產品經理要求實現該功能!!!
廢話小說,先上gif爲敬!
功能
正常來說,banner無限輪播,都是全屏的圖片去輪播,現在產品要求一張圖不佈滿全屏,讓下一個圖露出一點。。。
(雖然我看不太懂這個設計美感)
步驟
前期準備
找了一下,目測沒有現成的輪子,但看了一位大佬寫的無限輪播圖有感,我就想了一下,臥槽,我可以在這基礎上改一波呀。
在這裏真誠的感謝一波這位大哥Renny
https://github.com/ren93/RecyclerBanner.git
(如有雷同純屬巧合)
實現原理
- 利用recycleview做一個類似viewpager的效果
- 通過設置adapter的itemCount爲Integer.MAX_VALUE,再把默認的第一個item設置到*10000的位置去,曲線實現無限輪播功能
- 繼承工具類SnapHelper,實現拖動itemView有viewpager的feel而且自動適配位置回彈
貌似看起來也不難吧
重點
其中,繼承SnapHelper是重點,這是一個用於輔助RecyclerView在滾動結束時將Item對齊到某個位置,而官方中也有兩個子類LinearSnapHelper、PagerSnapHelper,都能讓item滑動後自動停留在recycleview的中間。很遺憾,這兩個官方的子類不滿足我們的功能需求,但是!我可以複製出來改它一波呀!
改完了,就依賴關聯上recycleview,完美!
new MyCustomSnapHelper().attachToRecyclerView(mRecyclerView);
結束
更多詳情,請前往我的github去擼,代碼裏面都有清楚的註釋
https://github.com/xiaofuchen/IncompleteScreenBanner
順手給Stars是中華人民的美德
謝謝