litho

作者: XShock | 来源:发表于2018-10-10 22:50 被阅读51次

    持续更新中。。。。

    简单介绍
    • 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组件的方法。

    image.png
    事件处理

    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);
        }
        ...
      }
    }

    相关文章

      网友评论

          本文标题:litho

          本文链接:https://www.haomeiwen.com/subject/wktvaftx.html