持续更新中。。。。
简单介绍
-
litho是一个用于在Android上构建高效用户界面的声明性框架,它允许你通过基于Java注释的简单功能API编写高度优化的Android视图(能够有效地减少过度绘制)。它主要用于实现基于RecyclerView的复杂可滚动UI。
-
使用Litho,你可以根据组件构建UI,而不是直接与传统的Android视图交互,在视图中体现为每一小块均为component,litho用View去承载Component,最终这个Component会被绘制在View上。
Sections
-
Litho主要是一个渲染API,但是高效的渲染UI只是编写高性能界面所面临挑战的一部分,如果你仔细查看你的设备,它们中的很多都是围绕一个可滚动的界面,这个界面可以获取并展示数据。使用RecyclerView构建列表时,必须考虑如何使适配器与数据保持同步,并通知适配器任何更改。这通常需要大量的手动索引处理,并且会产生有状态的,强制性的代码,当产品增长时将难以维护。
-
Section构建在Litho之上,为编写高度优化的列表界面提供声明性和可组合的API,虽然Litho Components用于显示UI,但Sections是一种构造数据并将其转换为Litho组件的方法。
事件处理
litho component之间的通信是通过OnEvent来实现的,事件声明为带有@Event注解的POJO类。按照惯例我们使用以Event为后缀的类名,events并不是在LayoutSpec或者在MountSpec中声明的内部类,这是设计规范,并且events可以在多个Component之间进行通信。
@Event
public class ColorChangedEvent {
public int color;
}
在这个例子中,我们假定有个ColorComponent的Component,为了表明ColorComponent能够分发ColorChangedEvent事件,ColorComponentSpec必须用该信息进行注解,这是通过@MountSpec和@LayoutSpec注释的events参数完成的。一个Component可以通过注解声明来表示它可以发送多个events.
@LayoutSpec(events = { ColorChangedEvent.class })
class ColorComponentSpec {
...
@OnCreateLayout
static Component onCreateLayout(
Context c,
@Prop int color) {
...
EventHandler handler = ColorComponent.getColorChangedEventHandler(c);
if (handler != null) {
ColorComponent.dispatchColorChangedEvent(
colorChangedHandler,
color);
}
...
}
}
网友评论