OpenHarmony开发之图形UI组件解析

简介

图形UI组件实现了一套系统级的图形引擎。

该组件为应用开发提供UIKit接口,包括了动画、布局、图形转换、事件处理,以及丰富的UI组件。

组件内部直接调用HAL接口,或者使用WMS(Window Manager Service)提供的客户端与硬件交互,以完成事件响应、图像绘制等操作。

图 1 图形子系统架构图

目录

/foundation/arkui/ui_lite
├── frameworks                  # 框架代码
│   ├── animator                # 动画模块
│   ├── common                  # 公共模块
│   ├── components              # 组件
│   ├── core                    # ui主流程(渲染、任务管理等)
│   ├── default_resource
│   ├── dfx                     # 维测功能
│   ├── dock                    # 驱动适配层
│   │   └── ohos                # ohos平台适配
│   ├── draw                    # 绘制逻辑
│   ├── engines                 # 绘制引擎
│   ├── events                  # 事件
│   ├── font                    # 字体
│   ├── imgdecode               # 图片管理
│   ├── layout                  # 页面布局
│   ├── themes                  # 主题管理
│   ├── window                  # 窗口管理适配层
│   └── window_manager
│       └── dfb
├── interfaces                  # 接口
│   ├── innerkits               # 模块间接口
│   │   └── xxx                 # 子模块的接口
│   └── kits                    # 对外接口
│       └── xxx                 # 子模块的接口
├── test                        # 测试代码
│   ├── framework
│   │   ├── include             # 测试框架头文件
│   │   └── src                 # 测试框架源码
│   ├── uitest                  # 显示效果测试(可执行程序在foundation/window/window_manager_lite/test:sample_ui)
│   │   └── test_xxx            # 具体UI组件效果测试
│   └── unittest                # 单元测试
│       └── xxx                 # 具体UI组件单元测试
└── tools                       # 测试和模拟器工具(模拟器工程、资源文件)└── qt                      # QT工程

约束

平台约束

  • Windows平台仅支持QT和OHOS IDE。
  • 其他平台支持情况参考vendor/hisilicon/[product_name]/config.json中的graphic标签(不存在graphic标签即该产品不存在图形子系统)。

编译构建

# 通过gn编译,在out目录下对应产品的文件夹中生成图形库
hb build -T //foundation/arkui/ui_lite:ui_lite -f  # 编译libui.so
hb build -T //foundation/window/window_manager_lite/test:sample_ui -f # 编译UI用例
hb build -T //foundation/arkui/ui_lite/test/unittest:arkui_ui_lite_test -f # 编译TDD用例# 编译qt库可直接参考qt模拟器工程:arkui/ui_lite/tools/qt/simulator/simulator.pro

说明

组件说明

组件分为基础组件和容器组件

  • 基础组件:仅实现组件自身单一功能,比如按钮、文字、图片等;
  • 容器组件:可将其他组件作为自己的子组件,通过组合实现复杂功能。

图 2 图形组件一览

使用说明

foundation/arkui/ui_lite/test/uitest中提供了图形所有组件和功能接口的使用范例。

  • Windows环境可运行QT工程调试,详见加入指引

    工程文件路径:

arkui/ui_lite/tools/qt/simulator/simulator.pro
  • 其他调试环境可以编译运行foundation/window/window_manager_lite/test:sample_ui

编译成功后得到可执行程序out/[product_name]/dev_tools/bin/sample_ui,在实际环境上运行即可观察对应组件显示效果。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之排序一

目录 1.排序 一.概念及其分类 二.排序的稳定性 2.插入排序 一.基本思想 二.插入排序的实现 复杂度 稳定性的分析 3.希尔排序 一.预排序代码的实现 二.希尔排序代码实现 复杂度分析 4.clock函数 1.排序 一.概念及其分类 说到排序,我们都不陌生&#x…

设计数据库之概念模式:E-R模型

Chapter3:设计数据库之概念模式:E-R模型 笔记来源:《漫画数据库》—科学出版社 设计数据库的步骤: 概念模式 概念模式(conceptual schema)是指将现实世界模型化的阶段进而,是确定数据库理论结构的阶段。 概念模式的设…

Ubuntu 安装 Carla仿真环境

1、系统要求 Ubuntu 16.04/18.04/20.04 CARLA 为 16.04 之前的 Ubuntu 版本提供支持。然而,Unreal Engine需要合适的编译器才能正常工作。 CARLA 服务器至少需要 6 GB GPU,但建议使用 8 GB。 2、安装NIVDIA驱动 BISO设置 开机F12,进入BIOS…

0x01_实验课leetcode

题目总结 lc1979 给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。 会求 gcd 就行 class Solution { public:int gcd(int a, int b){return b ? gcd(b, a % b) : a;}int findGCD(vector&…

29-中断管理

中断管理 什么是中断管理? 用户可以自定义配置系统可管理的最高中断优先级的宏定义configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY(高四位有效),它是用于配置内核中的basepri 寄存器的,当 basepri 设置为某个值的时候…

【sql】初识 where EXISTS

文章目录 概述1. select 简单示例2. update和DELETE参考 相关文章: 【sql】深入理解 mysql的EXISTS 语法 【sql】初识 where EXISTS 概述 where EXISTS (子查询)多对多中通过中间表查对方列表 1. select 简单示例 用户表A,小组…

hive语法树分析,判断 sql语句中有没有select *

pom依赖参考以下博文java 通过 IMetaStoreClient 取 hive 元数据信息-CSDN博客1 节点处理器类 import lombok.Getter; import org.apache.hadoop.hive.ql.lib.Dispatcher; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.parse.ASTNode; impor…

org.springframework.boot:type=Admin,name=SpringApplication异常

javax.management.InstanceNotFoundException: org.springframework.boot:typeAdmin,nameSpringApplication 问题描述: IDEA 新建 SpringBoot 项目,启动时后台报错: javax.management.InstanceNotFoundException: org.springframework.boot…

windows搭建Elasticsearch环境

windows搭建Elasticsearch环境 本章搭建Elasticsearch ik分词器插件 kibana三个环境.三个版本都是7.8.0 1.安装Elasticsearch 安装网址: https://www.elastic.co/cn/downloads/past-releases#elasticsearch 下载解压后直接进入bin目录,双击运行elasticsearch.…

基于springboot的牙科就诊管理系统

技术:springbootmysqlvue 一、系统背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样…

粤嵌6818开发板如何理解Linux文件IO?

一、文件IO的概述 1、什么是文件? Linux下一切皆文件。普通文件、目录文件、管道文件、套接字文件、链接文件、字符设备文件、块设备文件。 2、什么是IO? input output:输入输出 3、什么是文件IO? 对文件的输入输出,把…

轻松找回丢失数据EasyRecovery数据恢复软件让你无后顾之忧

轻松找回丢失数据,EasyRecovery数据恢复软件让你无后顾之忧,电脑数码行业必备工具,让你的数据安全有保障 ! 一、EasyRecovery数据恢复软件简介 在我们的日常生活中,无论是工作还是学习,都离不开电脑和数据…

Terraform实战(四)-资源打标签

1 腾讯云 1.1 tf配置 标签(Tag)是腾讯云提供的云资源管理工具,以键值对 key:values 的形式存在,用于关联您的大多数云资源,对于资源的分类、搜索和聚合十分有用。 在 Terraform 中,通过 Map 来定义一个资…

Linux/Perfection

Enumeration nmap 用 nmap 扫描了常见的端口,发现对外开放了 22,80,扫描一下详细信息,如下所示 ┌──(kali㉿kali)-[~/vegetable/HTB/Perfection] └─$ nmap -sC -sV -p 22,80 10.10.11.253 -oA nmap Starting Nmap 7.93 ( https://nmap…

目标检测——DOTA航拍数据集

DOTA数据集是一个用于航空图像中目标检测的大规模数据集,旨在帮助研究人员开发和评估航空图像中的目标检测算法。该数据集具有广泛的应用价值,尤其在计算机视觉和遥感技术领域。 DOTA数据集的特点主要体现在以下几个方面:首先,其…

科研文献阅读方法

阅读科研文献是科研工作者的重要工作之一,以下是一些阅读科研文献的方法: 确定阅读目的:在阅读科研文献之前,确定你的阅读目的,是为了了解某一领域的最新进展,还是为了找到支持自己研究的理论和实证依据。…

408学习笔记-14-C-数据在内存中的存储

1、整数型存储 整数型存储就是所有整型家族里的数据类型的存储方式,也就是说包含了字符类型的存储(因为字符的操作符的返回值是ASCII码值,故实际上存储的是整数)。 1.1、有符号整数 有符号整数包含char,short&#x…

如何做接口测试?

今天来聊聊接口测试,现在是2024年了,打开招聘网站随便点开一个招聘帖子,几乎都可以看到岗位JD要求写着有接口测试经验优先。其重要性可见一斑! 目前,凡是好一点稍具规模的公司哪怕是大厂外包也几乎都要求会接口测试&a…

解决mysql连接数据太多,“Too many connections“ 解决办法

解决mysql连接数据太多,"Too many connections" 解决办法 mysql出现Too many connections提示一般原因就是你网站连接数超过了你msyql配置的连接数据了,解决办法就是修改一下mysql配置文件中的max_connections参数或修改你程序连接直接及时处理.。 先搞清楚MySQL的…

一、typescript基础数据类型

1&#xff0c;布尔 let isDone:boolean false;2, 数字&#xff0c; 所有数字都是浮点数 let n:number 1;3,字符串 let name:string "mily", sex:string 女;4.数组 let arr1:number[] [1, 2, 3] let arr2:Array<number> [1, 2, 3]5,元祖&#xff0c; …