VLayout的使用
文章目录
- 前言
- 一、依赖
- 二、使用步骤
- 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的使用相关推荐
- vlayout 1.2.20 发布,阿里 LayoutManager 定制化布局
百度智能云 云生态狂欢季 热门云产品1折起>>> vlayout 1.2.20 发布了,vlayout(VirtualLayout)是阿里开源的一个针对 RecyclerView ...
- 苹果核 - Tangram 的基础 —— vlayout(Android)
1. 前言 天猫沉淀了3年的一套界面解决方案已经开始陆续进入开源流程:首先开源的是Android基础组件VLayout vlayout 是手机天猫 Android 版内广泛使用的一个基础 UI 框架项 ...
- 项目接入实现复杂布局的vlayout
前言 V- Layout 是阿里出品的基础 UI 框架,用于快速实现页面的复杂布局,在手机天猫 Android版 内广泛使用 电商图 让人激动的是,在上个月V- Layout终于在Github上开源! ...
- android aar项目_Android-我所认知的VLayout
记一次项目中用到的VLayout的使用: 去项目的build里面加上依赖开始撸码吧 implementation('com.alibaba.android:vlayout:1.2.6@aar') {t ...
- Vlayout使用详细介绍
Vlayout使用详细介绍 目录介绍 1.Vlayout简单介绍 2.主要功能介绍 2.1 主要功能的思维导图 2.2 主要功能说明 .使用方法与案例 3.1 初始化 3.2 设置回收复用池 3.3 ...
- Android高级-阿里VLayout使用和原理分析
VLayout 概念 定义: VLayout全程VirtuaLayout,它是一个针对RecyclerView的LayoutManager扩展,主要提供一整套布局方案 和布局间的组件复用的问题.由阿里 ...
- vlayout源码解析
在上一篇介绍了vlayout的使用,在这篇我们去研究vlayout的源码以及思路. 概括 当我们使用RecylerView时,需要绑定一个Adapter和LayoutManager,而vlayout里 ...
- Vlayout使用详细介绍 1
Vlayout使用详细介绍 目录介绍 1.Vlayout简单介绍 2.主要功能介绍 2.1 主要功能的思维导图 2.2 主要功能说明 .使用方法与案例 3.1 初始化 3.2 设置回收复用池 3.3 ...
- 淘宝、天猫用的Android框架V-Layout,赶紧收藏
前言 V- Layout 是阿里出品的基础 UI 框架,用于快速实现页面的复杂布局,在手机天猫 Android版 内广泛使用 电商图 让人激动的是,在上个月V- Layout终于在Github上开源! ...
- Alibaba开源UI框架V-Layout
最近水掘金的次数大幅度增长,毕竟日推的文章部分还是有很多含金量的.比如前两天看到的来自阿里巴巴开源的UI框架V-layout. V-Layout,全称VirtualLayout,是一个针对Recycl ...
最新文章
- 博士补贴125万,硕士70万本科21万,浙江某地人才(简直是抢人)新政!
- ​ROS必须理解的概念
- 去重查询_《前端算法系列》数组去重
- 解读千人千面,洞悉数据智能的价值
- 华北科技学院计算机期末考试,华北科技学院 专业计算机 考试专用
- linux系统解锁用户百度,详细到没朋友,一文帮你理清Linux 用户与用户组关系~
- Jenkins构建.net项目
- SCSS和Sass有什么区别?
- RouteDebug.dll
- 抓住数字经济机遇 新华三助力客户加速转型
- PostgreSQL逻辑优化——查询优化分析
- 判断数组类型的4种方法
- 情感分析用于预测金融市场靠谱吗?
- OriginPro 2021 设置成中文(软件自带)
- 聊一聊我在腾讯的外包同事
- 从零开始的VUE项目-09(vue-alipayer-v视频播放)
- 您未被授权查看该页原来是不瑞星个人防火墙的问题
- 鸟哥Linux学习之——man page说明
- STUN协议简要介绍
- DataGrid 动态绑定URL地址,在WebConfig中配置