Vlayout 是阿里巴巴最近4月份左右推出的一款 針對recyclerView 進(jìn)行快速實(shí)現(xiàn)復(fù)雜的布局格式的混排UI框架
原理就是重寫recyclerView的layoutmanager歹河,重寫RecyclerView.Adapter類,對應(yīng)自定義的VirtualLayoutManager和DelegateAdapter花吟。
復(fù)雜的布局格式混排包括:基礎(chǔ)的線性,網(wǎng)格還有浮動布局衅澈、欄格布局键菱、通欄布局、一拖N布局今布、瀑布流布局经备,還可以組合使用這些布局
目前最新版本是1.2.0 項(xiàng)目中我用的是1.0.9 版本 ,改為1.2后 項(xiàng)目基本沒動(很多人說這是阿里扔出來找bug的部默,目前來看還可以 侵蒙,GitHub上star快破6K了)
使用方式:
http://blog.csdn.net/totond/article/details/70172775
http://blog.csdn.net/sw950729/article/details/67634747
http://www.reibang.com/p/6b658c8802d1
這三個人總結(jié)的已經(jīng)很詳細(xì)了 基本的使用說明都有了。
下面說一下自己使用時候總結(jié)出來的干貨
首先Github上就有人問如果recyclerView嵌套了一個橫向的recyclerView如何做傅蹂?
該框架本身是沒有嵌入橫向滾動布局的helper的 那么我就用SingleLayoutHelper或者LinearLayoutHelper(1個item)像普通方式嵌入一個橫向的recyclerView不知道什么是Helper以及不知道怎么使用的看上面三個鏈接
嵌套完填充適配器但是正常移動豎向的recyclerView 時候每當(dāng)橫向的item的剛要出現(xiàn)在屏幕可見范圍內(nèi)的時候都會有明顯的卡頓纷闺。
原因:
recylerView 的item沒有復(fù)用算凿,recyclerView 中有個RecyclerView.RecycledViewPool的概念。 當(dāng)豎向的recyclerView第一次往下滾動頁面的時候急但,有很多內(nèi)部的item執(zhí)行inflate操作,所以導(dǎo)致很卡頓澎媒,另外recyclerView 25.3.1 版本還提供了
Vlayout中我設(shè)置下拉刷新時不僅要clear總Adapter 也就是DelegateAdapter戒努,同時也要刷新每一個layoutHelper里的數(shù)據(jù),刷新加載的先后順序一定要先更新helper里的數(shù)據(jù)镐躲,再更新總的DelegateAdapter的排列方式储玫。
另外在使用ScrollFixLayoutHelper 有一個bug,就是在當(dāng)DelegateAdapter里ScrollFixLayoutHelper 為最后一個或者是第一個adapters時候萤皂,導(dǎo)致RecyclerView計(jì)算高度不準(zhǔn)撒穷,無法觸發(fā)上拉加載和下拉刷新,這個是計(jì)算layoutManager時候高度計(jì)算失誤裆熙,這個也和作者反饋了端礼,說下個版本會修復(fù)(2333333).
Vlayout 使用的效果 過度繪制的地方幾乎沒有O(∩_∩)O~~