图形子系统

简介

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