专栏名称: 郭霖
Android技术分享平台,每天都有优质技术文章推送。你还可以向公众号投稿,将自己总结的技术心得分享给大家。
目录
相关文章推荐
复利大王  ·  好牛的幼儿园 ·  昨天  
鸿洋  ·  务必立即拿下软考证(政策红利) ·  2 天前  
复利大王  ·  冷暴力女王,翻车了 ·  2 天前  
复利大王  ·  手握25w华子股票,躺平了 ·  2 天前  
复利大王  ·  520怀孕事件? ·  2 天前  
51好读  ›  专栏  ›  郭霖

带你学习阿里巴巴的开源库VLayout

郭霖  · 公众号  · android  · 2017-06-16 08:00

正文

请到「今天看啥」查看全文


在讲解 `V - Layout` 前,我们先来搞懂一个问题:为什么要使用 `V - Layout`

  • 背景

Android中 UI 性能消耗主要来自于两个方面:

  • 布局层次嵌套导致多重 measure/layout

  • View 控件的创建和销毁

为了解决上述问题,现有的解决方式是:

  • 少用嵌套布局

  • 使用 ListView/GirdView/RecyclerView 等基础空间来处理 View 的回收与复用。

但是,很多时候我们需要在一个长列表下做多种类型的布局来分配各种元素,,特别是电商平台首页等页面,布局元素结构更加复杂多样。如下图:

此时的解决方案有所变化:不采用子View的复用,只采用一个主要的复用容器(如ListView 或 RecyclerView+LinearLayoutManager),然后在其中使用嵌套方式直接用各个组件进行拼接,减少了复用的能力

  • 问题

这种做法还是会损失android应用的性能。

  • 解决方案

通过自定义 LayoutManager 管理所有的布局类型

即阿里出品的基础 UI 框架项目 VirtualLayout就是采用该方式来解决上述问题

简介

定义: VirtualLayout 是阿里出品的基础 UI 框架项目

作用: 快速实现复杂的布局格式的混排

基于 RecyclerView & LayoutManager 扩展

原理分析

V - Layout 的本质原理是:通过自定义一个 VirtualLayoutManager(继承自 LayoutManager),用于管理一系列 LayoutHelper,将具体的布局能力交给 LayoutHelper 来完成,从而 快速实现组合布局 的需求。

  • 每个 LayoutHelper 负责页面某一个范围内的布局

  • V - Layout 默认实现了10种默认布局:(对应同名的LayoutHelper)

源码类说明

V - Layout的源码类图如下:







请到「今天看啥」查看全文