Facebook出品的Android声明式开源新框架Litho文档翻译-可见性的处理

欢迎转载,转载请标明出处.
英文原文文档地址: Litho-doc

事件处理

可见性的处理


可见范围的类型


框架现在支持4中类型过的可见性事件:

  • 可见事件:这种事件会在Component至少有1像素是可见的时候被触发.
  • 不可见事件:这种事件会在Component不再有任何像素是可见的时候被触发.
  • 聚焦可见事件:这种事件会在Component至少占据视窗一半的的时候被触发,如果Component的大小小于视窗的一半,则会在Component完全可见的时候被触发.
  • 完全展示可见事件:当整个Component在某个时间点通过视窗时,会触发此事件。


使用


可见性范围需要相关的Component支持增量式挂载

为一个Component注册可见性事件handler,你可以按照注册其他事件handler相同的步骤来操作.

下面是示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@LayoutSpec
class MyLayoutSpec {
@OnCreateLayout
static ComponentLayout onCreateLayout(ComponentContext c) {
return Column.create(c)
.alignItems(Align.STRETCH)
.child(Text.create(c)
.text("This is MY layout spec")
.withLayout()
.visibleHandler(MyLayoutSpec.onTitleVisible(c))
.invisibleHandler(MyLayoutSpec.onTitleInvisible(c)))
.focusedHandler(MyLayoutSpec.onComponentFocused(c, "someStringParam"))
.fullImpressionHandler(MyLayoutSpec.onComponentFullImpression(c)))
.build();
}
@OnEvent(VisibleEvent.class)
static void onTitleVisible(ComponentContext c) {
Log.d("VisibilityRanges", "The title entered the Visible Range");
}
@OnEvent(InvisibleEvent.class)
static void onTitleInvisible(ComponentContext c) {
Log.d("VisibilityRanges", "The title is no longer visible");
}
@OnEvent(FocusedVisibleEvent.class)
static void onComponentFocused(
ComponentContext c,
@Param String stringParam) {
Log.d(
"VisibilityRanges",
"The component is focused with param: " + contentString);
}
@OnEvent(FullImpressionVisibleEvent.class)
static void onComponentFullImpression(ComponentContext c) {
Log.d("VisibilityRanges", "The component has logged a full impression");
}
};




回到导航页