欢迎转载,转载请标明出处.
英文原文文档地址: 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) { } }
|
触摸范围扩大
你可以使用布局builder中的触摸扩展API来扩展可交互的范围边界.
1 2 3 4 5
| Text.create(c) .text(title) .withLayout() .clickHandler(MyComponent.onClick(c)) .touchExpansionDip(ALL, 10);
|
在这个例子中,text Component的可点击范围比Component的所有边界(上,下,左,右)都扩展了10dip.