Facebook出品的Android声明式开源新框架Litho文档翻译-触摸事件

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

事件处理

触摸事件处理


所有的Component都支持通过框架的事件系统处理触摸事件.所有的Component都默认支持处理下列几种事件:ClickEvent(点击事件),LongClickEvent(长按事件)和TouchEvent(触摸事件).

这意味着所有的布局builder都分别拥有叫做clickHandler,longClickHandler和touchHandler的EventHandler prop.你可以在你的@OnEvent注释里把你想要处理的事件类作为参数指定出来.

举例来说,在任意一个Component指定点击handler都非常简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@LayoutSpec
class MyComponentSpec {
@OnCreateLayout
static ComponentLayout onCreateLayout(
ComponentContext c,
@Prop String title) {
return Text.create(c)
.text(title)
.withLayout()
.clickHandler(MyComponent.onClick(c))
.build();
}
}

并且在MyComponentSpec中的回调可以写成这样:

1
2
3
4
5
6
7
8
9
10
11
@LayoutSpec
class MyComponentSpec {
...
@OnEvent(ClickEvent.class)
static void onClick(
ComponentContext c,
@FromEvent View view,
@Prop String someProp) {
// Handle click here.
}
}


触摸范围扩大


你可以使用布局builder中的触摸扩展API来扩展可交互的范围边界.

1
2
3
4
5
Text.create(c)
.text(title)
.withLayout()
.clickHandler(MyComponent.onClick(c))
.touchExpansionDip(ALL, 10);

在这个例子中,text Component的可点击范围比Component的所有边界(上,下,左,右)都扩展了10dip.




回到导航页