Facebook Litho:高性能安卓UI的构建框架
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的构建框架相关推荐
- 手把手学习Android的 Facebook Litho UI框架---(一)入门篇
1.什么是Litho? Litho是Facebook推出的一套高效构建Android UI 的声明式框架,主要 目的是提升RecyclerView复杂列表的滑动性能和降低内存的使用. Litho是一套 ...
- Android Virtualview:淘宝、天猫 又一个动态化、高性能的UI框架力作
Android Virtualview:淘宝.天猫 又一个动态化.高性能的UI框架力作 前言 淘宝.天猫一直致力于解决 页面动态化的问题 在2017年的4月发布了v1.0解决方案:Tangram模型 ...
- Android Virtualview:淘宝、天猫又开源了一个动态化、高性能的UI框架
转载 Carson_Ho Android Virtualview:淘宝.天猫又开源了一个动态化.高性能的UI框架 前言 目录 1. 为什么要向 Tangram模型 加入 VirtualView 2. ...
- Android ---facebook/litho框架 超实用的入门干货
可能很多人不知道litho是什么,我这里简单说一下litho就是用代码写布局.嗯,就是那么简单.或许你会问为什么用代码来写呢 我 xml用的挺好也方便,至于这些问题 我都不会回答(坏笑) 说了是干货所 ...
- Android Virtualview:淘宝、天猫又开源了一个动态化、高性能的UI框架力作
前言 淘宝.天猫一直致力于解决 页面动态化的问题 在2017年的4月发布了v1.0解决方案:Tangram模型 及其对应的 Android库 vlayout,该解决方案在手机淘宝.天猫 Android ...
- 安卓应用开发顶级框架大盘点,总有一款适合你
作者 | Slava Vaniukov 译者 | 苏本如,责编 | 夕颜 封图 | CSDN下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着软件开发向移动应用的转变,越来越多的企业意 ...
- 使用Famo.us 创建高性能移动 UI
javaScript 开发人员社区热烈祝贺Famo.us开源 UI 呈现框架的公共 beta 版于 2014 年春季发布.Famo.us 承诺解决一些最新的瓶颈问题,这些问题让 JavaScript ...
- Android通用开发笔记和高性能安卓开发框架源码
笔记列表 云炬Android开发笔记(准备篇) Android studio及AVD模拟器的安装调试教程 云炬Android开发笔记 2项目初始化 云炬Android开发笔记 3框架主配置的入口的设计 ...
- 组件cdn引入_高性能 React UI组件库SHINEOUT
今天给大家推荐一款超不错的React.js桌面端UI组件库Shineout. shineout 基于react.js构建的轻量级UI组件库.包含表单元素.数据表.通知提示.布局选项.导航等多种组件. ...
最新文章
- 多店铺多用户商城可以用来干嘛?适合什么样的商业模式?
- Silverlight调用的JS方法返回对象数组的处理方法
- Python 判断字符串是否包含中文
- C语言目录操作 (Linux/Unix)
- 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?...
- Simulink之多重逆变电路
- C#设计模式之21-策略模式
- linux系统安装升级win10双系统,Win10 安装Linux ubuntu-18.04双系统(安装指南)
- java innodb存储引擎_InnoDB存储引擎简介
- android 加载外部矢量图SVG
- 结构体在固件库中的应用
- 利用BIRT ReportEngine API开发报表
- (转)王小川湖畔大学演讲:人工智能最具商业价值的是什么?
- 2020最新抖音上热门技巧你知道了几个?
- 深度学习论文: Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection及其PyTorch实现
- 多站点同服务器同IP网站架设(IIS)心得
- Python制作字符版gif图
- NOIP 2015 蒟蒻做题记录
- 【人工智能笔记】第三十节:注意力原理分析,及tensorflow 2.0 实现
- ubuntu 网卡流量_详解Linux查看实时网卡流量的几种方式