图形子系统
简介
图形子系统主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS的应用框架,满足硬件资源较小的物联网设备的OpenHarmony系统应用开发。
各模块介绍:
- Components: 应用组件,包括UIView、UIViewGoup、UIButton、UILabel、UILabelButton、UIList、UISlider等。
- Layout:布局控件,包括Flexlayout、GridLayout、ListLayout等。
- Animator:动画模块,开发者可以自定义动画。
- Font:字体处理模块。
- Event:事件模块,包括click、press、drag、long press等基础事件。
- Task:任务管理模块。
- Input:输入事件处理模块。
- Display:显示处理模块。
- Render:渲染绘制模块。
- Draw2d:2d绘制模块,包括直线、矩形、圆、弧、图片、文字等绘制。包括软件绘制和硬件加速能力对接。
- Surface:共享内存。
- Window:窗口管理模块,包括窗口创建、显示隐藏、合成等处理。
- Adapter:适配层,对接底层适配层接口。
目录
表 1 图形子系统源代码目录结构
| 名称 | 描述 |
|---|---|
| config | 配置文件目录。 |
| frameworks/surface | Surface共享内存。 |
| frameworks/ui | UI模块,包括UI控件、动画、字体等功能。 |
| hals | HAL适配层逻辑。 |
| interfaces/ui | UI模块对外接口头文件。 |
| interfaces/utils | 图形子系统公共库头文件。 |
| services/ims | 输入管理服务,处理点击、按键等输入事件处理、分发。 |
| services/wms | 窗口管理服务,处理窗口的创建、管理和合成。 |
| utils | 图形子系统公共库。 |
约束
-
语言版本
-
C++11版本或以上
-
框架针对不同的芯片平台和底层OS能力,规格有所区别
-
Cortex-M RAM/ROM:
- RAM:建议大于100K
- ROM: > 300K
-
Cortex-A RAM/ROM:
-
RAM:建议大于1M
- ROM:> 1M
新增一个UI控件
所有的控件都继承UIView,有通用的属性和样式。UI控件分为两大类:普通控件和容器控件。普通控件不能添加子节点,容器控件作为父容器可以添加子节点。
新增控件头文件放到interfaces/ui/components,cpp文件放到frameworks/ui/src/components目录。组件Override OnDraw绘制接口,在这个接口里实现本控件的绘制流程。在frameworks/ui/BUILD.gn添加对应的新增文件,构建时会编译到libui.so。
涉及仓
graphic_lite
