图形子系统

简介

图形子系统主要包括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