最近水掘金的次数大幅度增长,毕竟日推的文章部分还是有很多含金量的。比如前两天看到的来自阿里巴巴开源的UI框架V-layout。

V-Layout,全称VirtualLayout,是一个针对RecyclerView的LayoutManager扩展, 主要提供一整套布局方案和布局间的组件复用的问题,更多应用于商城类首页复杂的界面,比如淘宝、天猫 ……

默认通用布局实现,包括网格布局、列表布局、悬浮布局等

  1. LinearLayoutHelper: 线性布局
  2. GridLayoutHelper: Grid布局, 支持横向的colspan
  3. FixLayoutHelper: 固定布局,始终在屏幕固定位置显示
  4. ScrollFixLayoutHelper: 固定布局,但之后当页面滑动到该图片区域才显示, 可以用来做 返回顶部或其他书签等
  5. FloatLayoutHelper: 浮动布局,可以固定显示在屏幕上,但用户可以拖拽其位置
  6. ColumnLayoutHelper: 栏格布局,都布局在一排,可以配置不同列之间的宽度比值
  7. SingleLayoutHelper: 通栏布局,只会显示一个组件View
  8. OnePlusNLayoutHelper: 一拖N布局,可以配置1-5个子元素
  9. StickyLayoutHelper: stikcy布局, 可以配置吸顶或者吸底
  10. StaggeredGridLayoutHelper: 瀑布流布局,可配置间隔高度/宽度

根据文档做了一个简单的入门,主要功能就是一个RecyclerView设置多个Adapter,打造多功能多样式的列表。

在gradle文件中加入

//alibabaXLayout
compile ('com.alibaba.android:vlayout:1.2.8@aar') {transitive = true
}

建一个普通的Activity并在该布局文件中只添加一个RecyclerView控件:
activity_xlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.v7.widget.RecyclerView
        android:id="@+id/rcv_xlayout"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

XLayoutActivity.java

public class XLayoutActivity extends Activity {RecyclerView recyclerView;DelegateAdapter.Adapter singleAdapter, gridAdapter, lindearAdapter;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_alibabaxlayout);recyclerView = findViewById(R.id.rcv_xlayout);//初始化VirtualLayoutManager manager = new VirtualLayoutManager(this);recyclerView.setLayoutManager(manager);//设置组件复用回收池RecyclerView.RecycledViewPool recycledViewPool = new RecyclerView.RecycledViewPool();recycledViewPool.setMaxRecycledViews(0, 10);//初始化数据ArrayList<String> list = new ArrayList<>();for (int i = 0; i < 20; i++) {list.add("test === " + i);}final GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(3);//spanCount=每行多少列gridLayoutHelper.setAutoExpand(false);//是否为自动填充final LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper(2);singleAdapter = new XLinearAdapter(this, DefaultLayoutHelper.newHelper(1), 1, list);//itemCount=当前样式布局的总个数(针对单行布局)gridAdapter = new XGridAdapter(this, gridLayoutHelper, 6, list);//count=列的总个数lindearAdapter = new XLinearAdapter(this, linearLayoutHelper, list.size(), list);ArrayList<DelegateAdapter.Adapter> adapters = new ArrayList<>();adapters.add(singleAdapter);adapters.add(gridAdapter);adapters.add(lindearAdapter);DelegateAdapter delegateAdapter = new DelegateAdapter(manager);delegateAdapter.setAdapters(adapters);recyclerView.setAdapter(delegateAdapter);}

所有的Adapter都必须继承DelegateAdapter.Adapter,重写onCreateLayoutHelper(),其他方法使用与RecyclerView.Adapter无异

public LayoutHelper onCreateLayoutHelper() {return layoutHelper;}

简单运行下:

感谢阿里巴巴的开源,让我们轻轻松松打造复杂列表页面,向阿里程序猿致敬~

掘金分享:https://juejin.im/entry/59104f6961ff4b006257ec78

Alibaba开源UI框架V-Layout相关推荐

  1. android 酷炫编辑框_25个实用酷炫的Android开源UI框架

    最近找了一些合适开源控件,这样在日常工作中会更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架.DB框架). 1.Side-Men ...

  2. 结合BeautyEye开源UI框架实现的较美观的Java桌面程序

    BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序,主要功能就是图灵机器人和一个2345网站万年历的抓取.... 挺简单而且实用的一个项目,实现 ...

  3. Android 开源UI框架汇总

    1. github排名 https://github.com/trending,github搜索:https://github.com/search 2.https://github.com/wasa ...

  4. android 漂亮的开源ui框架

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  5. semantic ui中文文档_Vuetify-广受欢迎的Material风格的开源UI框架

    全世界范围内广受欢迎的 Vue UI 框架,一个非常精致的 Material Design UI 套件. Material Design 风格 UI 框架 Vuetify 是一个基于 Vue.js 精 ...

  6. 分享两个超实用的Android开源UI框架——QMUI和XUI

    目录 QMUI_Android 功能特性 全局 UI 配置 丰富的 UI 控件 高效的工具方法 功能列表 支持 Android 版本 使用方法 QMUI Demo APP 安装包下载 XUI 特征 演 ...

  7. wpf ui框架_RapidCAX 开源UI框架

    微信公众号:AnyCAD专注打造新一代图形平台,助每一个工业软件成功! RapidCAX UI框架 从零开始搭建CAD/CAE/CAM的UI框架是一件繁琐的事情:需要选组件.集成组件以及各种配置.若集 ...

  8. GitHub聊天通信开源UI框架stfalcon-studio/ChatKit使用教程

    项目地址 官网地址:https://github.com/stfalcon-studio/ChatKit 官方有比较详细的说明,不过时英文的. 本篇源码: Gitee:https://gitee.co ...

  9. 炫酷的android ui,25个Android酷炫开源UI框架

    1.Side-Menu.[Android](http://lib.csdn.net/base/android "Android知识库") 分类侧滑菜单,Yalantis 出品. 项 ...

最新文章

  1. 关于linux驱动程序的学习
  2. Python中模块(Module)和包(Package)的区别
  3. tomcat5应用移植到WAS5.1中的一些问题及解决
  4. python web自动化测试实验报告_Python:web自动化测试
  5. 树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案
  6. ssh 协议 java_java代码之SSH协议连接linux
  7. matlab计算复活节概率,复活节日期的计算方法
  8. cJSON各函数实现的功能
  9. 工业环境软件套件 CODESYS web 服务器被曝严重的RCE漏洞
  10. 请立即停止刷博客流量
  11. CCF201409-1相邻数对(C语言)
  12. Thread.currentThread()方法 Runnable
  13. python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中
  14. 使用PS切图时,调整标尺单位
  15. BGP路由选路与负载
  16. 程序员修炼之道-从小工到专家(第一章)读后感
  17. 机器学习必会技能之微积分【一文到底】
  18. mysql left join_MySQL LEFT JOIN 语法用法与实例
  19. 半导体器件基础04:稳压二极管和TVS管
  20. 申请163电子邮箱,163邮箱格式是么样的?

热门文章

  1. RBAC浅谈(一)RBAC的基本概念
  2. 操作系统丨(五)文件管理
  3. 【docker】docker启动nginx并实现反向代理
  4. ​​【认证篇 / 远程】(7.0) ❀ 01. Windows Server 2022域服务器安装与配置 ❀ FortiGate 防火墙
  5. Vim 编辑器:如何增加或减少日期、时间、数字和序数
  6. 温馨提示:【防滑eva海绵】操作注意事项
  7. 追番插件 收藏动漫 记录动漫播放时间
  8. 面向对象设计——系统体系结构建模
  9. Alist百度网盘大文件需要权限解决
  10. 《电磁兼容防护EMC》学习笔记