文章目录

  • 前言
  • 一、依赖
  • 二、使用步骤
    • 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. 博士补贴125万,硕士70万本科21万,浙江某地人才(简直是抢人)新政!
  2. ​ROS必须理解的概念
  3. 去重查询_《前端算法系列》数组去重
  4. 解读千人千面,洞悉数据智能的价值
  5. 华北科技学院计算机期末考试,华北科技学院 专业计算机 考试专用
  6. linux系统解锁用户百度,详细到没朋友,一文帮你理清Linux 用户与用户组关系~
  7. Jenkins构建.net项目
  8. SCSS和Sass有什么区别?
  9. RouteDebug.dll
  10. 抓住数字经济机遇 新华三助力客户加速转型
  11. PostgreSQL逻辑优化——查询优化分析
  12. 判断数组类型的4种方法
  13. 情感分析用于预测金融市场靠谱吗?
  14. OriginPro 2021 设置成中文(软件自带)
  15. 聊一聊我在腾讯的外包同事
  16. 从零开始的VUE项目-09(vue-alipayer-v视频播放)
  17. 您未被授权查看该页原来是不瑞星个人防火墙的问题
  18. 鸟哥Linux学习之——man page说明
  19. STUN协议简要介绍
  20. DataGrid 动态绑定URL地址,在WebConfig中配置

热门文章

  1. My Batis缓存
  2. .NET平台下,使用字母进行中文模糊查询
  3. Python - 3.6 学习四
  4. 机房环控系统服务器,idc服务器机房搬迁环境监控系统介绍
  5. 印象大使_宣布开放组织大使计划
  6. 最新校园疫情防控进出登记管理PHP系统源码
  7. 【板栗糖GIS】arcmap—关于色带的那些事儿(综合篇)不断更新~
  8. 如何衡量一个Android应用开发人员的能力?
  9. php getfield,ThinkPHP中getField()方法的使用
  10. 数字员工在苏宁:我们为什么在人力资源体系部署RPA?