OSUI(原名LVUI)是一个基于LVGL的模拟现代流行移动操作系统界面的框架,专为嵌入式系统和资源受限设备设计。
⚠️ 重要警告本项目当前处于早期开发阶段,各种API尚未完善,初始化及使用例程也未完全完成。
请注意:
- API接口可能会频繁变更
- 部分功能可能不完整或存在bug
- 文档和示例代码仅供参考
- 不建议在生产环境中使用
- 现代UI设计:模拟现代移动操作系统的界面风格
- 自适应屏幕:使用DP(密度无关像素)技术,UI可自适应不同尺寸屏幕
- 跨屏移植:在不同大小屏幕之间移植无需二次开发
- 模块化架构:清晰的模块划分,易于扩展和维护
- 完整UI组件:包含桌面、锁屏、状态栏、导航栏等完整UI组件
- 简易应用集成:预留添加app接口,只需要一个
lv_obj_t对象就可以添加应用界面 - 系统级API:提供类系统API,可自定义时间、日期、状态图表等系统元素
- 智能主题管理:可通过设置主题颜色自动更改壁纸及字体颜色等
- 应用框架:提供应用开发框架,支持多应用管理
- 动画支持:内置动画系统,提供流畅的UI交互体验
- 主题系统:支持自定义主题和壁纸
- 跨平台:基于LVGL,支持多种显示设备和输入设备
OSUI/
├── LICENSE # GPL v3 许可证
├── README.md # 项目说明文档
├── old/ # 旧版本代码
│ └── lvui/ # 旧版LVUI框架
└── osui_v10.5/ # 新版OSUI框架 v10.5
├── osui_init.c/h # OSUI初始化模块
├── app/ # 应用示例
│ ├── app_example.c/h # 示例应用
│ └── app_file_explorer.c/h # 文件浏览器应用
├── core/ # 核心模块
│ └── osui_base.c/h # 基础类型和宏定义
├── disp/ # 显示模块
│ └── osui_disp.c/h # 显示参数和配置
├── input/ # 输入模块
│ └── osui_input.c/h # 输入设备管理
├── sys/ # 系统模块
│ └── osui_sys.c/h # 系统管理和服务
├── ui/ # UI组件模块
│ ├── osui_ui_anim.c/h # 动画系统
│ ├── osui_ui_debug.c/h # 调试工具
│ ├── osui_ui_desktop.c/h # 桌面UI
│ ├── osui_ui_frame.c/h # UI框架
│ ├── osui_ui_lable.c/h # 标签组件
│ ├── osui_ui_locker.c/h # 锁屏界面
│ ├── osui_ui_navbar.c/h # 导航栏
│ ├── osui_ui_pdc.c/h # PDC组件
│ ├── osui_ui_statbar.c/h # 状态栏
│ └── osui_ui_theme.c/h # 主题系统
└── wp/ # 壁纸资源
├── wp_d.bmp # 日间壁纸
└── wp_l.bmp # 夜间壁纸
- LVGL 图形库
- C编译器(支持C99标准)
- 嵌入式系统或桌面模拟环境
- 初始化LVGL
lv_init();- 初始化OSUI
osui_init();- 创建应用
// 创建示例应用
lv_obj_t* app = app_example_init();
// 添加到桌面
osui_ui_desktop_add_app("示例应用", app);- osui_base:基础类型定义、内存管理、日志系统
- 提供统一的错误码、内存分配宏和日志接口
- osui_disp:显示设备配置和管理
- 支持多种分辨率和显示参数配置
- osui_input:输入设备管理
- 统一处理触摸、按键等输入事件
- 桌面系统:应用图标网格、壁纸、时间显示
- 锁屏界面:密码/图案解锁、通知显示
- 状态栏:信号、电量、时间、通知图标
- 导航栏:返回、主页、多任务按钮
- 动画系统:页面切换、图标动画、过渡效果
- 主题系统:颜色、字体、样式自定义
- 应用管理:应用生命周期管理
- 示例应用:演示应用开发模式
- 文件浏览器:文件管理应用示例
// 设置系统时间
osui_ui_desktop_set_time("14:30");
// 设置系统日期
osui_ui_desktop_set_date("2024-01-15");
// 设置状态栏图标
// 支持信号、电量、WiFi等状态图标显示// 设置主题颜色(自动调整壁纸和字体颜色)
osui_ui_theme_set_color(lv_color_hex(0xffffffff));
// 设置壁纸
osui_ui_desktop_set_wallpaper("wp/wp_d.bmp");
// 设置字体颜色
osui_ui_desktop_set_font_color(lv_color_hex(0xFFFFFF));
// 设置背景颜色
osui_ui_desktop_set_back_color(lv_color_hex(0x000000));// 获取桌面尺寸(DP自适应)
int16_t width = osui_ui_desktop_get_width();
int16_t height = osui_ui_desktop_get_height();
// 设置DP缩放比例(自适应不同屏幕密度)
// 框架自动处理DP到像素的转换- 在
app/目录下创建应用文件 - 实现应用初始化函数
- 注册应用到桌面
// app_example.h
#ifndef __OSUI_APP_EXAMPLE_H__
#define __OSUI_APP_EXAMPLE_H__
#include "osui/core/osui_base.h"
#include "osui/disp/osui_disp.h"
#include "osui/input/osui_input.h"
#include "osui/sys/osui_sys.h"
lv_obj_t* app_example_init();
#endif- 将OSUI源代码添加到项目
- 配置LVGL依赖
- 包含必要的头文件
- 调用初始化函数
本项目采用 GNU General Public License v3.0 许可证。详情请参阅 LICENSE 文件。
- GitHub: Dreams-Possible/LVGL-UIOS
- 问题反馈: GitHub Issues
- LVGL - 强大的嵌入式图形库
- 所有贡献者和用户
OSUI - 为嵌入式设备带来现代UI体验







