Vlayout 是阿里巴巴最近4月份左右推出的一款 针对recyclerView 进行快速实现复杂的布局格式的混排UI框架
原理就是重写recyclerView的layoutmanager,重写RecyclerView.Adapter类,对应自定义的VirtualLayoutManager和DelegateAdapter。
复杂的布局格式混排包括:基础的线性,网格还有浮动布局、栏格布局、通栏布局、一拖N布局、瀑布流布局,还可以组合使用这些布局
目前最新版本是1.2.0 项目中我用的是1.0.9 版本 ,改为1.2后 项目基本没动(很多人说这是阿里扔出来找bug的,目前来看还可以 ,GitHub上star快破6K了)
使用方式:
http://blog.csdn.net/totond/article/details/70172775
http://blog.csdn.net/sw950729/article/details/67634747
http://www.jianshu.com/p/6b658c8802d1
这三个人总结的已经很详细了 基本的使用说明都有了。
下面说一下自己使用时候总结出来的干货
首先Github上就有人问如果recyclerView嵌套了一个横向的recyclerView如何做?
该框架本身是没有嵌入横向滚动布局的helper的 那么我就用SingleLayoutHelper或者LinearLayoutHelper(1个item)像普通方式嵌入一个横向的recyclerView不知道什么是Helper以及不知道怎么使用的看上面三个链接
嵌套完填充适配器但是正常移动竖向的recyclerView 时候每当横向的item的刚要出现在屏幕可见范围内的时候都会有明显的卡顿。
原因:
recylerView 的item没有复用,recyclerView 中有个RecyclerView.RecycledViewPool的概念。 当竖向的recyclerView第一次往下滚动页面的时候,有很多内部的item执行inflate操作,所以导致很卡顿,另外recyclerView 25.3.1 版本还提供了
Vlayout中我设置下拉刷新时不仅要clear总Adapter 也就是DelegateAdapter,同时也要刷新每一个layoutHelper里的数据,刷新加载的先后顺序一定要先更新helper里的数据,再更新总的DelegateAdapter的排列方式。
另外在使用ScrollFixLayoutHelper 有一个bug,就是在当DelegateAdapter里ScrollFixLayoutHelper 为最后一个或者是第一个adapters时候,导致RecyclerView计算高度不准,无法触发上拉加载和下拉刷新,这个是计算layoutManager时候高度计算失误,这个也和作者反馈了,说下个版本会修复(2333333).
Vlayout 使用的效果 过度绘制的地方几乎没有O(∩_∩)O~~