HarmonyOS 是否可以提供使用CAPI进行自定义组件的demo

HarmonyOS
5h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

demo示例代码:

#include <functional>
#include "ArkUI/native_interface.h"
#include "ArkUI/native_node.h"
#include "ArkUI/native_type.h"
#include "drawing_canvas.h"
#include "drawing_color.h"
#include "drawing_path.h"
#include "drawing_pen.h"
#include "drawing_types.h"
struct UserCallback {
  std::function<void(ArkUI_NodeCustomEvent* event)> callback;
};
class ArkUINativeModule {
  public:
    ArkUINativeModule()
  {
  OH_ArkUI_QueryModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeApi_);
  // 统一入口函数处理事件。
  nodeApi_->registerNodeCustomEventReceiver([](ArkUI_NodeCustomEvent* event) {
  auto* userData = reinterpret_cast<UserCallback*>(OH_ArkUI_NodeCustomEvent_GetUserData(event));
  userData->callback(event);
});
}
~ArkUINativeModule()
{
  nodeApi_->unregisterNodeCustomEventReceiver();
}
static ArkUINativeModule* GetInstance()
{
  static ArkUINativeModule nativeModule;
  return &nativeModule;
}
ArkUI_NativeNodeAPI_1* GetNodeAPI()
{
  return nodeApi_;
}
private:
  ArkUI_NativeNodeAPI_1* nodeApi_ = nullptr;
};
class MyBadge {
  public:
    MyBadge()
  {
  nativeModule_ = ArkUINativeModule::GetInstance()->GetNodeAPI();
  handle_ = nativeModule_->createNode(ARKUI_NODE_CUSTOM);
  userCallback_ = new UserCallback();
  // 设置自定义回调。
  userCallback_->callback = [this](ArkUI_NodeCustomEvent* event) {
  auto type = OH_ArkUI_NodeCustomEvent_GetEventType(event);
  switch (type) {
case ARKUI_NODE_CUSTOM_EVENT_ON_MEASURE:
OnMeasure(event);
break;
  case ARKUI_NODE_CUSTOM_EVENT_ON_LAYOUT:
  OnLayout(event);
  break;
  case ARKUI_NODE_CUSTOM_EVENT_ON_FOREGROUND_DRAW:
  OnForegroundDraw(event);
  break;
  default:
    break;
}
};
分享
微博
QQ
微信
回复
4h前
相关问题
HarmonyOS提供自定义组件封装demo
415浏览 • 2回复 待解决
HarmonyOS Web是否提供自定义dns方法
415浏览 • 1回复 待解决
CounterComponent样式是否可以自定义
222浏览 • 1回复 待解决
HarmonyOS 自定义相机demo
272浏览 • 1回复 待解决
HarmonyOS 自定义相机演示demo
207浏览 • 1回复 待解决
HarmonyOS 全局自定义弹窗demo
286浏览 • 1回复 待解决
返回按钮是否可以自定义事件?
222浏览 • 1回复 待解决
hvigor自定义扩展demo
1003浏览 • 1回复 待解决
是否可以自定义权限弹框文字
1687浏览 • 1回复 待解决
Grid组件scrollBar是否支持自定义
2201浏览 • 1回复 待解决
自定义组件onMeasureSize使用
393浏览 • 1回复 待解决