一、新建native项目

1、首先从左上角创建项目

img


2、在弹窗选择native项目

img

二、组件上树下树

2.1 组件上树
ArkTS侧需要在ArkTS页面创建用于挂载NDK接口创建组件的占位组件ContentSlot,该组件能够绑定一个NodeContent对象,然后该对象通过Node-API传递到Native侧挂载显示Native组件。以下是相关代码片段:

//ArkTs侧

//导入Native的so
import nativeNode from 'libentry.so';
import { NodeContent } from '@kit.ArkUI';

// 初始化NodeContent对象。
private rootSlot:NodeContent = new NodeContent();
@State @Watch('changeNativeFlag') showNative: boolean = false;

//挂载显示
nativeNode.createNativeRoot(this.rootSlot)
//Native侧
ArkUI_NodeContentHandle contentHandle;
OH_ArkUI_GetNodeContentFromNapiValue(env, args[0], &contentHandle);

2.2 组件下树

//ArkTS侧
 // 销毁NativeModule组件
      nativeNode.destroyNativeRoot()
//Native侧
OH_ArkUI_NodeContent_AddNode(handle_, myNativeNode);
OH_ArkUI_NodeContent_RemoveNode(handle_, myNativeNode);

三、为组件设置属性

通过setAttribute实现,参考代码如下:

    void SetAlignItems(ArkUI_VerticalAlignment align)
    {
        ArkUI_NumberValue value[] = {{.i32 = align}};
        ArkUI_AttributeItem item = {value, 1};
        nativeModule_->setAttribute(handle_, NODE_ROW_ALIGN_ITEMS, &item);
    }

四、为组件设置事件监听

使用addNodeEventReceiver函数添加组件事件的监听器,该监听器会监听该组件上发生的所有事件,参考代码如下:

 nativeModule_ = NativeModuleInstance::GetInstance()->GetNativeNodeAPI();
        // 事件触发时需要通过函数获取对应的事件对象,这边通过设置节点自定义数据将封装类指针保持在组件上,方便后续事件分发。
        nativeModule_->setUserData(handle_, this);
        // 注册节点监听事件接收器。
        nativeModule_->addNodeEventReceiver(handle_, ArkUINode::NodeEventReceiver);
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐