【鸿蒙实战开发】C-API版本XComponent接入

C-API 版本使用XComponent总共分成了两个步骤:

  1. createSurface的时候创建XComponentSurface;

  2. startSurface的时候将CPP的XComponentSurface连接到ArkUI的Xcomponent上。

createSurface的时候主要做了以下的操作:

1.创建并将XComponentSurface记录到Map中:

void RNInstanceCAPI::createSurface(facebook::react::Tag surfaceId, std::string const& moduleName) {

m_surfaceById.emplace(

surfaceId,

XComponentSurface(

// ···

surfaceId,

moduleName)

);

}

2.在XComponentSurface中创建rootView,用于挂载C-API的组件,并在Surface上统一处理Touch事件:

XComponentSurface::XComponentSurface(

//···

SurfaceId surfaceId,

std::string const& appKey)

:

//···

m_nativeXComponent(nullptr),

m_rootView(nullptr),

m_surfaceHandler(SurfaceHandler(appKey, surfaceId)) {

m_scheduler->registerSurface(m_surfaceHandler);

m_rootView = componentInstanceFactory->create(

surfaceId, facebook::react::RootShadowNode::Handle(), "RootView");

m_componentInstanceRegistry->insert(m_rootView);

m_touchEventHandler = std::make_unique<SurfaceTouchEventHandler>(m_rootView);

}

startSurface的时候主要做了以下的操作:

  1. 在ArkTS侧创建XComponent,并设置id,type与libraryname属性。其中:
  • id:组件的唯一标识,又由InstanceID和SurfaceID共同组成,记录了此XComponent属于哪一个Instance与Surface;
  • type:node
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值