# ui_core **Repository Path**: mihu525/ui_core ## Basic Information - **Project Name**: ui_core - **Description**: 一个通用的UI核心 | a simple Generic UI Core. (基于 Wi-Fi IoT套件开发) - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-01-27 - **Last Updated**: 2021-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ui_core ============================ 一个简单的UI核心框架 | a simple UI Core framework. ## 设计目标 该框架设计目标是——为多界面应用程序提供一套通用的(平台无关的)界面绘制、界面切换框架。 ## 核心特性 1. 每个界面可以有自己的绘制回调函数,用于自定义绘制动作; 2. 每个界面可以有自己的事件(目前仅支持按键)处理回调函数,用于自定义事件响应动作; 3. 每个界面可以有自己的进入、退出回调函数,用于自定义切面切换时,上一个界面退出、下一个界面进入时的动作; 4. 每个界面可以有自己的销毁回调函数(类似于C++的析构函数),用于自定义内存被释放之前的动作; 5. 事件处理和界面绘制都在UI线程中完成(和多数GUI框架类似),单线程模型,调用`UIRun`的线程会成为UI线程。 ## 主要API 主要API定义如下: ```c // 创建UI对象 UI* UICreate(void* ctx, const char* name, UIDrawCallback onDraw, UIEnterCallback onEnter, UILeaveCallback onLeave, UIEventCallback onKey, UICreateCallback onCreate, UIDestroyCallback onDestroy); // 销毁UI对象 Status UIDestroy(UI* ui); // 执行UI循环(事件处理+界面绘制) Status UIRun(UI* ui); // 停止UI循环 Status UITerminate(void); // 切换到某个界面,下一次绘制就会展示出来 Status UISwitch(UI* ui); // 返回上一界面 Status UIBack(void); ``` ## Demo 完整 demo 请参考`demo`子目录。 ## 如何编译 如果您想体验并运行demo程序,首先你需要编译本项目的demo: 1. 在 openharmony 源码的顶层目录下,执行:`git clone https://gitee.com/hihopeorg/ui_core.git` 2. 修改 openharmony 源码的`wifiiot.json`文件: * 将其中的 `"//applications/sample/wifi-iot/app"` 替换为 `"//ui_core:app"` 3. 在 openharmony 源码的顶层目录下,执行:`python build.py wifiiot` ## 如何使用 如果您想在你的项目中使用本项目,您可以将本项目作为添加到您现有的源码树上, 然后通过 BUILD.gn 将本项目的 `src:ui_core` 添加到你的 `features` 中即可,可参考当前目录的 `BUILD.gn` 文件;