快把你繁重的viewpager換成recyclerview吧

相信viewpager+fragment在各個APP都已是熟面孔了,你們對他們應該都比較熟悉了。 最近在項目中使用的這個組合被吐槽有各類問題,由於vp中使用的fragment份量比較重(view數目比較多),並且vp嵌套的佈局也存在一些問題(NestScroll嵌套vp+recyclerview等),暴露出了上下滑動靈敏,左右滑動卡頓等問題。 想過的解決方案git

  1. 自定義view。(沒達到預期效果,對於滑動處理一樣存在問題)
  2. recyclerview第一項嵌套vp。(相信不少APP都是這樣作的,不過多是因爲上述所說,fragment份量問題,vp滑動沒有問題,但rv滑動到第一項就出現卡頓了)
  3. recyclerview第一項嵌套recyclerview。(你沒看錯,第一項嵌套一個橫向佈局的rv,最後結果是無比的順暢)

如今說說第3點的實現github

  1. rv實現vp效果,這種效果github上面一搜估計就會有了,不過!!!如今是谷歌原生支持了!!!普天同慶。 並且代碼十分簡單粗暴,一行代碼實現vp滑動效果(關於Snaphelper,自行搜索一下)

實現

  1. 不過這種實現方式對比vp來講也存在一些缺點,缺乏了一些相應的監聽或者API。 好比滑動結束監聽、獲取當前position、左滑仍是右滑。不過上有政策下有對策,只須要咱們手動加一些代碼便可 首先是獲取當前position和左滑仍是右滑

本身實現

而後是滑動結束監聽佈局

滑動結束

不過當你調用 orm

滑動到指定某一項
這個API的時候,上面那個滑動狀態改變監聽事件是不會觸發的,故須要本身去調用滑動結束的事件,缺點之一

還有一個缺點就是沒有viewpager那種Transformer效果,不過一樣的,rv帶來的效率和流暢性不是vp+fragment能比的。故針對項目須要,各取所需吧!!事件

相關文章
相關標籤/搜索