Facebook开源了Litho。Litho是一种创建安卓应用用户图形界面的框架,使用了类似于React的声明式风格,考虑了界面的滚动性能。

\\

使用Facebook Litho,开发人员可以调用声明式API创建不可变的UI组件。由于组件是不可变的,因此可以另开一个用于准备渲染和布局的线程,然后将组件传递给UI线程,实现在屏幕上的实际渲染。Litho使用了代码生成和针对渲染的组件优化,通过对组件分组降低了安卓ViewGroups的数量,使用更少视图层级生成更为平面化的界面。据Facebook宣称,这些做法降低了内存的使用,增加了界面的滚动速度。

\\

Litho使用Yoga布局组件,该过程可以同步完成,也可以异步完成。Yoga是一个跨平台的布局引擎,它也是由Facebook开源发布的。考虑到组件是不可变的,而创建大量组件的代价很大,因此Litho允许一个组件被当前视图弃用后,可在其它视图中重用。

\\

使用Litho定义一个“Hello, World!”文本组件的代码如下:

\\

\public class MyActivity extends Activity {\  @Override\  public void onCreate(Bundle savedInstanceState) {\    super.onCreate(savedInstanceState);\    final ComponentContext c = new ComponentContext(this);\    final LithoView lithoView = LithoView.create(\        this /* 上下文 */, \        Text.create(c)\            .text(\"Hello, World!\")\            .textSizeDip(50)\            .build());\    setContentView(lithoView);\  }\}\

\\

LithoView相当于安卓的ViewGroup,实现Litho定义组件与安卓View间的关联。Text是一个Litho提供的小部件,具有text、textColor、textSize、textStyle等一系列属性。

\\

Litho API相当庞大,其中包含多个软件包,具有超过300个Java类和接口。Litho支持用户化布局、单元测试、事件处理、RTL(right-to-left)文本、可访问性等多种功能。

\\

Litho已用于多个Facebook的安卓应用,例如Facebook、Facebook Lite、Messenger和Workplace等。Facebook声称在界面滚动功能上,Litho比安卓RecyclerView的性能提高了35%。这是通过“将繁重工作转移到后台线程,并将渲染工作分布在多个帧中”实现的。此外:

\\

\

Litho将复杂视图分解为多个较小部分,例如文本、图像和视频等,然后增量地渲染各部分,并将需完成的工作分布到多个帧中。它还能在回收利用各个小部分,以无限可能的方式重组它们,这降低了在内存中需要创建并存储的视图个数。

\

\\

该框架已发布在GitHub上。如需了解更多细节,可参考指南和文档。

\\

查看英文原文: Facebook Litho: An Android UI Framework Created for Performance

Facebook Litho:高性能安卓UI的构建框架相关推荐

  1. 手把手学习Android的 Facebook Litho UI框架---(一)入门篇

    1.什么是Litho? Litho是Facebook推出的一套高效构建Android UI 的声明式框架,主要 目的是提升RecyclerView复杂列表的滑动性能和降低内存的使用. Litho是一套 ...

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

    Android Virtualview:淘宝.天猫 又一个动态化.高性能的UI框架力作 前言 淘宝.天猫一直致力于解决 页面动态化的问题 在2017年的4月发布了v1.0解决方案:Tangram模型 ...

  3. Android Virtualview:淘宝、天猫又开源了一个动态化、高性能的UI框架

    转载 Carson_Ho Android Virtualview:淘宝.天猫又开源了一个动态化.高性能的UI框架 前言 目录 1. 为什么要向 Tangram模型 加入 VirtualView 2. ...

  4. Android ---facebook/litho框架 超实用的入门干货

    可能很多人不知道litho是什么,我这里简单说一下litho就是用代码写布局.嗯,就是那么简单.或许你会问为什么用代码来写呢 我 xml用的挺好也方便,至于这些问题 我都不会回答(坏笑) 说了是干货所 ...

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

    前言 淘宝.天猫一直致力于解决 页面动态化的问题 在2017年的4月发布了v1.0解决方案:Tangram模型 及其对应的 Android库 vlayout,该解决方案在手机淘宝.天猫 Android ...

  6. 安卓应用开发顶级框架大盘点,总有一款适合你

    作者 | Slava Vaniukov 译者 | 苏本如,责编 | 夕颜 封图 | CSDN下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着软件开发向移动应用的转变,越来越多的企业意 ...

  7. 使用Famo.us 创建高性能移动 UI

    javaScript 开发人员社区热烈祝贺Famo.us开源 UI 呈现框架的公共 beta 版于 2014 年春季发布.Famo.us 承诺解决一些最新的瓶颈问题,这些问题让 JavaScript ...

  8. Android通用开发笔记和高性能安卓开发框架源码

    笔记列表 云炬Android开发笔记(准备篇) Android studio及AVD模拟器的安装调试教程 云炬Android开发笔记 2项目初始化 云炬Android开发笔记 3框架主配置的入口的设计 ...

  9. 组件cdn引入_高性能 React UI组件库SHINEOUT

    今天给大家推荐一款超不错的React.js桌面端UI组件库Shineout. shineout 基于react.js构建的轻量级UI组件库.包含表单元素.数据表.通知提示.布局选项.导航等多种组件. ...

最新文章

  1. 多店铺多用户商城可以用来干嘛?适合什么样的商业模式?
  2. Silverlight调用的JS方法返回对象数组的处理方法
  3. Python 判断字符串是否包含中文
  4. C语言目录操作 (Linux/Unix)
  5. 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?...
  6. Simulink之多重逆变电路
  7. C#设计模式之21-策略模式
  8. linux系统安装升级win10双系统,Win10 安装Linux ubuntu-18.04双系统(安装指南)
  9. java innodb存储引擎_InnoDB存储引擎简介
  10. android 加载外部矢量图SVG
  11. 结构体在固件库中的应用
  12. 利用BIRT ReportEngine API开发报表
  13. (转)王小川湖畔大学演讲:人工智能最具商业价值的是什么?
  14. 2020最新抖音上热门技巧你知道了几个?
  15. 深度学习论文: Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection及其PyTorch实现
  16. 多站点同服务器同IP网站架设(IIS)心得
  17. Python制作字符版gif图
  18. NOIP 2015 蒟蒻做题记录
  19. 【人工智能笔记】第三十节:注意力原理分析,及tensorflow 2.0 实现
  20. ubuntu 网卡流量_详解Linux查看实时网卡流量的几种方式

热门文章

  1. MYSQL中自动加一行汇总
  2. 全景丨0基础学习VR全景制作,后期篇第二章:调色原理和色彩分析
  3. 移动windows桌面文件夹
  4. 【RPC】RPC基础(二)RPC协议
  5. Mapstruct使用说明(一)
  6. 那些你不知道的MapStruct用法——Mapstruct自定义映射
  7. 栈应用:中缀表达式求值
  8. [反汇编练习] 160个CrackMe之033
  9. Delphi第三方皮肤组件AlphaControls的下载和使用方法
  10. Android源码剖析之Framwork层后记篇(硬件消息传递、apk管理、输入法框架、编译过程)