• 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:XComponent)


    可用于EGL/OpenGLES和媒体数据写入,并显示在XComponent组件。

    说明:

    该组件从API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

    子组件

    构造参数type为"surface"时不支持。

    从API version 9开始,构造参数type为"component"时可以包含子组件。

    接口

    XComponent

    XComponent(value: {id: string, type: string, libraryname?: string, controller?: XComponentController})

    参数:

    参数名参数类型必填描述
    idstring组件的唯一标识,支持最大的字符串长度128。
    typestring用于指定XComponent组件类型,可选值仅有两个为:
    -"surface":用于EGL/OpenGLES和媒体数据写入,开发者定制的绘制内容单独展示到屏幕上。
    -"component"9+ :XComponent将变成一个容器组件,并可在其中执行非UI逻辑以动态加载显示内容。
    其他值均会被视为"surface"类型
    librarynamestring应用Native层编译输出动态库名称,仅XComponent类型为"surface"时有效。
    controllerXComponentcontroller给组件绑定一个控制器,通过控制器调用组件方法,仅XComponent类型为"surface"时有效。

    XComponent10+

    XComponent(value: {id: string, type: XComponentType, libraryname?: string, controller?: XComponentController})

    参数:

    参数名参数类型必填描述
    idstring组件的唯一标识,支持最大的字符串长度128。
    typeXComponentType用于指定XComponent组件类型。
    librarynamestring用Native层编译输出动态库名称,仅类型为SURFACE或TEXTURE时有效。
    controllerXComponentcontroller给组件绑定一个控制器,通过控制器调用组件方法,仅类型为SURFACE或TEXTURE时有效。

    XComponentType10+枚举说明

    名称描述
    SURFACE用于EGL/OpenGLES和媒体数据写入,开发者定制的绘制内容单独展示到屏幕上。
    COMPONENTXComponent将变成一个容器组件,并可在其中执行非UI逻辑以动态加载显示内容。
    TEXTURE用于EGL/OpenGLES和媒体数据写入,开发者定制的绘制内容会和XComponent组件的内容合成后展示到屏幕上。

    说明:

    type为COMPONENT("component")时,XComponent作为容器,子组件沿垂直方向布局:

    • 垂直方向上对齐格式:FlexAlign.Start
    • 水平方向上对齐格式:FlexAlign.Center

    所有的事件响应均不支持。

    布局方式更改和事件响应均可通过挂载子组件来设置。

    内部所写的非UI逻辑需要封装在一个或多个函数内。

    属性

    事件

    仅type为SURFACE("surface")或TEXTURE时以下事件有效。不支持通用事件

    onLoad

    onLoad(callback: (event?: object) => void )

    插件加载完成时回调事件。

    参数:

    参数名参数类型必填描述
    eventobject获取XComponent实例对象的context,context上挂载的方法由开发者在c++层定义。

    onDestroy

    onDestroy(event: () => void )

    插件卸载完成时回调事件。

    XComponentController

    xcomponent 组件的控制器,可以将此对象绑定至XComponent组件,然后通过控制器来调用组件方法。

    创建对象

    xcomponentController: XComponentController = new XComponentController()

    getXComponentSurfaceId

    getXComponentSurfaceId(): string

    获取XComponent对应Surface的ID,供@ohos接口使用,使用方式可参考相机管理,仅XComponent类型为SURFACE("surface")或TEXTURE时有效。

    返回值:

    类型描述
    stringXComponent持有Surface的ID。

    setXComponentSurfaceSize

    setXComponentSurfaceSize(value: {surfaceWidth: number, surfaceHeight: number}): void

    设置XComponent持有Surface的宽度和高度,仅XComponent类型为SURFACE("surface")或TEXTURE时有效。

    参数:

    参数名参数类型必填描述
    surfaceWidthnumberXComponent持有Surface的宽度。
    surfaceHeightnumberXComponent持有Surface的高度。

    getXComponentContext

    getXComponentContext(): Object

    获取XComponent实例对象的context,仅XComponent类型为SURFACE("surface")或TEXTURE时有效。

    返回值:

    类型描述
    Object获取XComponent实例对象的context,context包含的具体接口方法由开发者自定义,context内容与onLoad回调中的第一个参数一致。

    示例

    示例效果请以真机运行为准,当前IDE预览器不支持。

    1. // xxx.ets
    2. @Entry
    3. @Component
    4. struct PreviewArea {
    5. private surfaceId: string = ''
    6. private xComponentContext: Record<string, () => void> = {}
    7. xComponentController: XComponentController = new XComponentController()
    8. build() {
    9. Row() {
    10. XComponent({
    11. id: 'xcomponent',
    12. type: XComponentType.SURFACE,
    13. controller: this.xComponentController
    14. })
    15. .onLoad(() => {
    16. this.xComponentController.setXComponentSurfaceSize({ surfaceWidth: 1920, surfaceHeight: 1080 })
    17. this.surfaceId = this.xComponentController.getXComponentSurfaceId()
    18. this.xComponentContext = this.xComponentController.getXComponentContext() as Record<string, () => void>
    19. })
    20. .width('640px')
    21. .height('480px')
    22. }
    23. .backgroundColor(Color.Black)
    24. .position({ x: 0, y: 48 })
    25. }
    26. }

    最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

    这份鸿蒙(Harmony NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

    希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

    获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

    鸿蒙(Harmony NEXT)最新学习路线

    •  HarmonOS基础技能

    • HarmonOS就业必备技能 
    •  HarmonOS多媒体技术

    • 鸿蒙NaPi组件进阶

    • HarmonOS高级技能

    • 初识HarmonOS内核 
    • 实战就业级设备开发

    有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

    获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

    《鸿蒙 (OpenHarmony)开发入门教学视频》

    《鸿蒙生态应用开发V2.0白皮书》

    图片

    《鸿蒙 (OpenHarmony)开发基础到实战手册》

    OpenHarmony北向、南向开发环境搭建

    图片

     《鸿蒙开发基础》

    • ArkTS语言
    • 安装DevEco Studio
    • 运用你的第一个ArkTS应用
    • ArkUI声明式UI开发
    • .……

    图片

     《鸿蒙开发进阶》

    • Stage模型入门
    • 网络管理
    • 数据管理
    • 电话服务
    • 分布式应用开发
    • 通知与窗口管理
    • 多媒体技术
    • 安全技能
    • 任务管理
    • WebGL
    • 国际化开发
    • 应用测试
    • DFX面向未来设计
    • 鸿蒙系统移植和裁剪定制
    • ……

    图片

    《鸿蒙进阶实战》

    • ArkTS实践
    • UIAbility应用
    • 网络案例
    • ……

    图片

     获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

    总结

    总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

  • 相关阅读:
    EL表达式
    关于领域驱动设计,大家都理解错了
    C# Socket通信从入门到精通(10)——如何检测两台电脑之间的网络是否通畅
    Java多线程基础(创建、使用,状态)——Java第九讲
    计算机视觉
    java 商机管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目
    开关电源测试解决方案之浪涌电流测试 -纳米软件
    SpringBoot社区小区物业管理停车场系统(Java+Layui+MyBatis+Python+Mysql)
    专业软件测评中心分享:科技成果验收测试报告的作用
    Java(一)--- DOS,文档注释,代码规范
  • 原文地址:https://blog.csdn.net/m0_64420071/article/details/136708424