鸿蒙XComponent组件的认识

概述:

XComponent组件作为一种渲染组件,通常用于满足开发者较为复杂的自定义渲染需求,例如相机预览流的显示、游戏画面的渲染、自定义视频播放器等等。其中Native API是其核心内容!

其可通过指定其type字段来实现不同的功能,主要有两个“surface”和“component”字段可供选择。

  1. “surface”类型,开发者可将相关数据传入XComponent单独拥有的“NativeWindow”来渲染画面。
  2. “component”类型,主要用于实现动态加载显示内容的目的。
  3. NativeWindow是本地平台化窗。例如, 通过NativeWindow提供的Native API接口申请图形Buffer,并将生产图形内容写入图形Buffer,最终提交Buffer到图形队列。媒体相关应用(视频、相机等)也可以将相关数据写入XComponent所提供的NativeWindow,从而呈现相应画面。

在ArkTS侧使用如下代码,即可用XComponent组件进行利用EGL/OpenGLES渲染的开发


XComponent({ id: 'xcomponentId1', type: 'surface', libraryname: 'nativerender' })
  .onLoad((context) => {})
  .onDestroy(() => {})
  

onLoad()事件

  • 触发时刻:XComponent准备好surface后触发
  • 参数context:其上面挂载了暴露在模块上的native方法,使用方法类似于利用 import context from “libnativerender.so” 直接加载模块后获得的context实例
  • 时序:onLoad事件的触发和Surface相关,其和native侧的OnSurfaceCreated的时序如下图:
    在这里插入图片描述

onDestroy()事件

  • 触发时刻:XComponent组件被销毁时触发与一般ArkUI的组件销毁时机一致,其和native侧的OnSurfaceDestroyed的时序如下图;
    在这里插入图片描述

媒体数据写入:

  • XComponent所持有的NativeWindow符合“生产者-消费者”模型。Camera、AVPlayer等符合生产者设计的部件都可以将数据写入XComponent持有的NativeWindow并通过XComponent显示。
    在这里插入图片描述
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值