Android Virtualview:淘宝、天猫 又一个动态化、高性能的UI框架力作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BhuAMnIh-1636293637117)(https://user-gold-cdn.xitu.io/2018/2/24/161c547e362d4a05?imageView2/0/w/1280/h/960/ignore-error/1)]


3. 实现原理

3.1 核心思路

根据Tangram v1.0中 出现的问题:UI组件无法动态更新 & 加载性能低,VirtualView的具体解决方案如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U8UPf22q-1636293637157)(https://user-gold-cdn.xitu.io/2018/2/24/161c547e38d9afa3?imageView2/0/w/1280/h/960/ignore-error/1)]

3.2 实现方案

  • 根据其原理,VirtualView的实现方案是:虚拟化开发
  • 虚拟化开发的本质:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNuxmpBD-1636293637158)(https://user-gold-cdn.xitu.io/2018/2/24/161c547e3a9e3fb1?imageView2/0/w/1280/h/960/ignore-error/1)]

之所以称为虚拟化,是因为Canvas绘制的视图不存在一一对应的实体View

3.3 总结

从上可知,VirtualView的创新在于:

  1. 通过 XML 模板实现组件的动态性
  2. 通过 虚拟化技术(本质 = Canvas)开发组件,提升了组件的渲染性能

4. 工作流程

  • 在了解了VirtualView的本质原理 & 整体架构后
  • 下面,我将开始讲解VirtualView的工作流程

4.1 流程概述

  • 根据上述方案,VirtualView的工作流程分为3大部分:创建UI组件、创建界面模板 & 客户端加载界面
  • 具体如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ww9LlCKH-1636293637159)(https://user-gold-cdn.xitu.io/2018/2/24/161c547e3a790a91?imageView2/0/w/1280/h/960/ignore-error/1)]

4.2 流程详细分析

下面我将对每个流程的原理 & 过程详细分析

流程1:创建UI组件

  • 具体描述 根据业务需求,创建所需要的UI组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ijZ3n4t-1636293637160)(https://user-gold-cdn.xitu.io/2018/2/24/161c547e3c3ba078?imageView2/0/w/1280/h/960/ignore-error/1)]

有2种创建方式:使用框架内置(封装好)的UI组件 / 自定义

1.1 使用框架内置(封装好)的UI组件

  • 即 可直接使用封装好的UI组件而不需自身创建
  • 具体如下(含组件基础属性)

注: a. 自定义组件应继承基础组件 b. 系统封装UI组件的原理 同 “自定义UI组件,下面将具体讲解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HSgrIFyG-1636293637161)(https://user-gold-cdn.xitu.io/2018/2/24/161c547e622e4a99?imageView2/0/w/1280/h/960/ignore-error/1)]

###1.2 自定义UI组件 若框架内置的UI组件无法满足需求,则开发者可自定义UI组件

  • 自定义流程 VirtualView抽象 & 封装了 Canvas绘制视图的流程,使得开发者只需按指定的接口协议实现1个组件的绘制逻辑:测量、绘制 & 绘制,即能实现在宿主容器通过 Canvas 直接绘制 UI内容,从而创建虚拟化组件

即 上述则是虚拟化创建组件的过程

  • 具体过程
  1. 实现基础组件需遵循一个接口的规范:定义了渲染过程中所需的3个流程:测量尺寸阶段、布局阶段 & 绘制阶段

a. 定义这3个阶段是为了符合Android系统的使用,即View绘制的三大流程:measure过程、layout过程、draw过程。若不了解,请看文章 (2)自定义View Measure过程 - 最易懂的自定义View原理系列

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值