VirtualLayout是一個針對RecyclerView的LayoutManager擴展, 主要提供一整套布局方案和布局間的組件復(fù)用的問題。
牛逼之處:根布局就一個RecycleView,還是原生的RecycleView,但是實現(xiàn)的效果:
注意:這里你看到的就一個RecycleView包裹,13號那個控件是可以拖拽的在屏幕范圍內(nèi),5號控件是可以黏在頂部的,還有很多好東西,就自己去玩demo吧
思路:
通過定制化的LayoutManager,接管整個RecyclerView的布局邏輯;LayoutManager管理了一系列LayoutHelper,LayoutHelper負(fù)責(zé)具體布局邏輯實現(xiàn)的地方;每一個LayoutHelper負(fù)責(zé)頁面某一個范圍內(nèi)的組件布局;不同的LayoutHelper可以做不同的布局邏輯,因此可以在一個RecyclerView頁面里提供異構(gòu)的布局結(jié)構(gòu),這就能比系統(tǒng)自帶的LinearLayoutManager、GridLayoutManager等提供更加豐富的能力。同時支持?jǐn)U展LayoutHelper來提供更多的布局能力。
主要功能:
-
默認(rèn)通用布局實現(xiàn),解耦所有的View和布局之間的關(guān)系: Linear, Grid, 吸頂, 浮動, 固定位置等。
- LinearLayoutHelper: 線性布局
- GridLayoutHelper: Grid布局, 支持橫向的colspan
- FixLayoutHelper: 固定布局,始終在屏幕固定位置顯示
- ScrollFixLayoutHelper: 固定布局,但之后當(dāng)頁面滑動到該圖片區(qū)域才顯示, 可以用來做返回頂部或其他書簽等
- FloatLayoutHelper: 浮動布局,可以固定顯示在屏幕上,但用戶可以拖拽其位置
- ColumnLayoutHelper: 欄格布局,都布局在一排,可以配置不同列之間的寬度比值
- SingleLayoutHelper: 通欄布局,只會顯示一個組件View
- OnePlusNLayoutHelper: 一拖N布局,可以配置1-5個子元素
- StickyLayoutHelper: stikcy布局, 可以配置吸頂或者吸底
- StaggeredGridLayoutHelper: 瀑布流布局,可配置間隔高度/寬度
-
使用:
- 直接在module中build.gradle添加依賴
compile('com.alibaba.android:vlayout:1.0.2@aar') {
transitive = true
}
- 使用方法直接參考Demo
- 我這里就不介紹具體使用方法了,直接參考demo
說說這個框架現(xiàn)在存在的問題吧
- 1.當(dāng)我創(chuàng)建多種類型的LayoutHelper在一個RecycleView中使用時,可能導(dǎo)致
layoutHelper.setBgColor(0xFFF5A623);這個方法失效,尤其是我在使用StickyLayoutHelper時,我是一直無效的 - 2.使用StickyLayoutHelper時,會導(dǎo)致界面繪制后顯示的界面很臟,但是只要一拖動RecycleView就自動清理了

開啟過度繪制

沒有開啟過度繪制