【鸿蒙南向开发】ACE框架特性调研——手势处理分析

前言:

ACE全称是Ability Cross-platform Environment (元能力跨平台执行环境),是应用在OpenHarmony上的UI框架。作为一个UI框架,需要提供视图布局,UI组件,事件响应机制等的支持,并且当前主流的应用终端都为触摸屏,UI的操作大都通过手势完成,我们这里就对ACE框架的手势处理做一个简单的分析。

手势分类:

从OpenHarmony开发者网站提供的API上我们可以看到,在基于TS扩展的开发范式说明里,单独对手势做了一个类别,而在基于JS扩展的开发范式说明里,则是归类到通用事件里,名称也略有不同:

image.png

代码结构与简单类图:

代码结构:

./ace/ace\_engine/core

|-- gesture #gesture主文件夹,定义了各种手势的具体实现类与对应的Recongnizer

| |-- include

| |-- src

|-- components #组件文件夹

| |-- gesture\_listenser #对触摸目标对象做一些处理,注册Recongnizer等。

gesture文件夹下的类图:

这里仅对gesture文件下的文件做一个类图梳理,可以很清晰的看到Gesture类和Recongnizer类的对应关系,其中Gesture类会创建一个对应的Recongnizer,并set对应相关的OnActionID,priority和Mask,而Recongnizer类则是处理手势相关的事件逻辑等。

image.png

手势简单代码流程:

我们以Pinch为例,当应用调用相关接口后,JS进行Binding操作:


JSClass\<JSPinchGesture\>::Declare("PinchGesture");

JSClass\<JSPinchGesture\>::StaticMethod("create", &JSPinchGesture::Create, opt);

JSClass\<JSPinchGesture\>::StaticMethod("pop", &JSGesture::Pop);

JSClass\<JSPinchGesture\>::StaticMethod("onActionStart", &JSGesture::JsHandlerOnActionStart);

JSClass\<JSPinchGesture\>::StaticMethod("onActionUpdate", &JSGesture::JsHandlerOnActionUpdate);

JSClass\<JSPinchGesture\>::StaticMethod("onActionEnd", &JSGesture::JsHandlerOnActionEnd);

JSClass\<JSPinchGesture\>::StaticMethod("onActionCancel", &JSGesture::JsHandlerOnActionCancel);

JSClass\<JSPinchGesture\>::Bind(globalObj);

Create函数里面会创建一个Gesture实例,并将其push到gestureComponent中:


void JSPinchGes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值