IncompleteScreenBanner
一個(gè)不顯示全屏圖的banner無(wú)限自動(dòng)輪播例子痒筒,利用recycleview實(shí)現(xiàn)類(lèi)似viewpager效果
背景
其實(shí)程序猿要開(kāi)發(fā)一個(gè)demo的背景,都!一蚪腋!樣!
說(shuō)什么為了社會(huì)進(jìn)步姨蟋,為了挑戰(zhàn)自我屉凯,都!是眼溶!瞎悠砚!扯!蛋堂飞!
無(wú)非就是一個(gè)背景灌旧,產(chǎn)品經(jīng)理要求實(shí)現(xiàn)該功能0笤邸!枢泰!
廢話小說(shuō)描融,先上gif為敬!
功能
正常來(lái)說(shuō)衡蚂,banner無(wú)限輪播窿克,都是全屏的圖片去輪播,現(xiàn)在產(chǎn)品要求一張圖不布滿全屏毛甲,讓下一個(gè)圖露出一點(diǎn)年叮。。玻募。
(雖然我看不太懂這個(gè)設(shè)計(jì)美感)
步驟
前期準(zhǔn)備
找了一下只损,目測(cè)沒(méi)有現(xiàn)成的輪子,但看了一位大佬寫(xiě)的無(wú)限輪播圖有感七咧,我就想了一下跃惫,臥槽,我可以在這基礎(chǔ)上改一波呀艾栋。
在這里真誠(chéng)的感謝一波這位大哥Renny
https://github.com/ren93/RecyclerBanner.git
(如有雷同純屬巧合)
實(shí)現(xiàn)原理
- 利用recycleview做一個(gè)類(lèi)似viewpager的效果
- 通過(guò)設(shè)置adapter的itemCount為Integer.MAX_VALUE辈挂,再把默認(rèn)的第一個(gè)item設(shè)置到*10000的位置去,曲線實(shí)現(xiàn)無(wú)限輪播功能
- 繼承工具類(lèi)SnapHelper裹粤,實(shí)現(xiàn)拖動(dòng)itemView有viewpager的feel而且自動(dòng)適配位置回彈
貌似看起來(lái)也不難吧
重點(diǎn)
其中终蒂,繼承SnapHelper是重點(diǎn),這是一個(gè)用于輔助RecyclerView在滾動(dòng)結(jié)束時(shí)將Item對(duì)齊到某個(gè)位置遥诉,而官方中也有兩個(gè)子類(lèi)LinearSnapHelper拇泣、PagerSnapHelper,都能讓item滑動(dòng)后自動(dòng)停留在recycleview的中間矮锈。很遺憾霉翔,這兩個(gè)官方的子類(lèi)不滿足我們的功能需求,但是苞笨!我可以復(fù)制出來(lái)改它一波呀债朵!
改完了,就依賴關(guān)聯(lián)上recycleview瀑凝,完美序芦!
new MyCustomSnapHelper().attachToRecyclerView(mRecyclerView);
結(jié)束
更多詳情,請(qǐng)前往我的github去擼粤咪,代碼里面都有清楚的注釋
https://github.com/xiaofuchen/IncompleteScreenBanner
順手給Stars是中華人民的美德
謝謝