阿里巴巴推出超強針對布局方案和布局復(fù)用的開源框架(vlayout)

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就自動清理了
開啟過度繪制
沒有開啟過度繪制

文檔鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容