文章目录

  • 前言
  • 一、依赖
  • 二、使用步骤
    • 1.初始化LayoutManager
    • 2.设置回收复用池大小
    • 3.加载数据
    • 4.layouthelper分类及关系
  • 总结

前言

vlayout全称VirtualLayout,它是一个针对RecyclerView的LayoutManager扩展, 主要提供一整套布局方案和布局间的组件复用的问题。它通过定制化的LayoutManager,接管整个RecyclerView的布局逻辑;LayoutManager管理了一系列LayoutHelper,LayoutHelper负责具体布局逻辑实现的地方;每一个LayoutHelper负责页面某一个范围内的组件布局;不同的LayoutHelper可以做不同的布局逻辑,因此可以在一个RecyclerView页面里提供异构的布局结构,这就能比系统自带的LinearLayoutManager、GridLayoutManager等提供更加丰富的能力。同时支持扩展LayoutHelper来提供更多的布局能力。


提示:以下是本篇文章正文内容,下面案例可供参考

一、依赖

依赖

implementation ('com.alibaba.android:vlayout:1.2.36@aar'){transitive = true}

二、使用步骤

1.初始化LayoutManager

代码如下(示例):

final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
final VirtualLayoutManager layoutManager = new VirtualLayoutManager(this);recyclerView.setLayoutManager(layoutManager);

2.设置回收复用池大小

如果一屏内相同类型的 View 个数比较多,需要设置一个合适的大小,防止来回滚动时重新创建 View:
代码如下(示例):

RecyclerView.RecycledViewPool viewPool = new RecyclerView.RecycledViewPool();recyclerView.setRecycledViewPool(viewPool);viewPool.setMaxRecycledViews(0, 10);

3.加载数据

加载数据时有两种方式 : DelegateAdapter 和 VirtualLayoutAdapter

使用 DelegateAdapter, 可以像平常一样写继承自DelegateAdapter.Adapter的Adapter, 只比之前的Adapter需要多重载onCreateLayoutHelper方法。 其他的和默认Adapter一样。
代码如下(示例):

DelegateAdapter delegateAdapter = new DelegateAdapter(layoutManager, hasConsistItemType);
recycler.setAdapter(delegateAdapter);// 之后可以通过 setAdapters 或 addAdapter方法添加DelegateAdapter.AdapterdelegateAdapter.setAdapters(adapters);// or
CustomAdapter adapter = new CustomAdapter(data, new GridLayoutHelper());
delegateAdapter.addAdapter(adapter);// 如果数据有变化,调用自定义 adapter 的 notifyDataSetChanged()
adapter.notifyDataSetChanged();

另一种是当业务有自定义的复杂需求的时候, 可以继承自VirtualLayoutAdapter, 实现自己的Adapter

public class MyAdapter extends VirtualLayoutAdapter {......
}MyAdapter myAdapter = new MyAdapter(layoutManager);//构造 layoutHelper 列表
List<LayoutHelper> helpers = new LinkedList<>();
GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(4);
gridLayoutHelper.setItemCount(25);
helpers.add(gridLayoutHelper);GridLayoutHelper gridLayoutHelper2 = new GridLayoutHelper(2);
gridLayoutHelper2.setItemCount(25);
helpers.add(gridLayoutHelper2);//将 layoutHelper 列表传递给 adapter
myAdapter.setLayoutHelpers(helpers);//将 adapter 设置给 recyclerView
recycler.setAdapter(myAdapter);

4.layouthelper分类及关系

加载数据时有两种方式 : DelegateAdapter 和 VirtualLayoutAdapter

默认通用布局实现,解耦所有的View和布局之间的关系: Linear, Grid, 吸顶, 浮动, 固定位置等。

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

上述默认实现里可以大致分为两类:
一是非fix类型布局,像线性、Grid、栏格等,它们的特点是布局在整个页面流里,随页面滚动而滚动;
另一类就是fix类型的布局,它们的子节点往往不随页面滚动而滚动。

总结

VLayout就是为了安卓中的多布局现象更加简便 不需要那么麻烦

VLayout的使用相关推荐

  1. vlayout 1.2.20 发布,阿里 LayoutManager 定制化布局

    百度智能云 云生态狂欢季 热门云产品1折起>>>   vlayout 1.2.20 发布了,vlayout(VirtualLayout)是阿里开源的一个针对 RecyclerView ...

  2. 苹果核 - Tangram 的基础 —— vlayout(Android)

    1. 前言 天猫沉淀了3年的一套界面解决方案已经开始陆续进入开源流程:首先开源的是Android基础组件VLayout vlayout 是手机天猫 Android 版内广泛使用的一个基础 UI 框架项 ...

  3. 项目接入实现复杂布局的vlayout

    前言 V- Layout 是阿里出品的基础 UI 框架,用于快速实现页面的复杂布局,在手机天猫 Android版 内广泛使用 电商图 让人激动的是,在上个月V- Layout终于在Github上开源! ...

  4. android aar项目_Android-我所认知的VLayout

    记一次项目中用到的VLayout的使用: 去项目的build里面加上依赖开始撸码吧 implementation('com.alibaba.android:vlayout:1.2.6@aar') {t ...

  5. Vlayout使用详细介绍

    Vlayout使用详细介绍 目录介绍 1.Vlayout简单介绍 2.主要功能介绍 2.1 主要功能的思维导图 2.2 主要功能说明 .使用方法与案例 3.1 初始化 3.2 设置回收复用池 3.3 ...

  6. Android高级-阿里VLayout使用和原理分析

    VLayout 概念 定义: VLayout全程VirtuaLayout,它是一个针对RecyclerView的LayoutManager扩展,主要提供一整套布局方案 和布局间的组件复用的问题.由阿里 ...

  7. vlayout源码解析

    在上一篇介绍了vlayout的使用,在这篇我们去研究vlayout的源码以及思路. 概括 当我们使用RecylerView时,需要绑定一个Adapter和LayoutManager,而vlayout里 ...

  8. Vlayout使用详细介绍 1

    Vlayout使用详细介绍 目录介绍 1.Vlayout简单介绍 2.主要功能介绍 2.1 主要功能的思维导图 2.2 主要功能说明 .使用方法与案例 3.1 初始化 3.2 设置回收复用池 3.3 ...

  9. 淘宝、天猫用的Android框架V-Layout,赶紧收藏

    前言 V- Layout 是阿里出品的基础 UI 框架,用于快速实现页面的复杂布局,在手机天猫 Android版 内广泛使用 电商图 让人激动的是,在上个月V- Layout终于在Github上开源! ...

  10. Alibaba开源UI框架V-Layout

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

最新文章

  1. Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】...
  2. table control中用帮助(F4)实现自动填充另一字段
  3. oracle 状态unknown,Oracle RAC 一个节点的instance资源状态为unknown
  4. Mobile first! Wijmo 5 + Ionic Framework之:Hello World!
  5. Nacos注册中心——启动相关的配置
  6. 细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4
  7. 使计算机系统使用方便和_______是操作系统的两个主要设计目标,操作系统练习.doc...
  8. FIR定点提高精度的trick_02
  9. [计组]寄存器的基本含义
  10. python中属于无序序列的有_Python字典和集合属于无序序列。(2.0分)_学小易找答案...
  11. GitHub 新手教程 四,Git GUI 新手教程(1),OpenSSH Public Key
  12. win10下安装numpy
  13. windows下activemq安装下载
  14. CDR 网状填充高级图形
  15. spring cloud 微服务调用链
  16. C语言(求解一元二次方程的根)
  17. 【改进模糊神经网络】基于粒子群-万有引力算法PSOGSA 改进的前馈神经网络研究(Matlab代码实现)
  18. 【目标跟踪】|单目标跟踪指标
  19. CCF认证 2018-03 棋局评估
  20. linux设备驱动归纳总结(八):1.总线、设备和驱动

热门文章

  1. Python线上培训机构贴吧
  2. 郑州的python培训班
  3. 拖拉机java_拖拉机(升级)必胜之秘诀 - 淡泊明志,宁静致远 - JavaEye技术网站...
  4. 横向领导力--成长有感
  5. 续写大屏产业进化曲线:当荣耀智慧屏越过山丘
  6. App测试流程及测试点分享
  7. reduce方法 实现数组对象中 每三个属性相加 形成新数组
  8. 32.计算两个日期相隔的天数
  9. 数据结构与算法入门(follow 左神)
  10. 结合自己入学以来在计算机专业的,结合自己的实际,谈谈你入学以来对大学生活的适应情况。你最大的困难或困惑是什么?需...