Tasmota/lib/libesp32_lvgl/lvgl/README_zh.md

8.2 KiB
Raw Blame History

LVGL - Light and Versatile Graphics Library

LVGL - 轻量级通用型图形库

LVGL是一个高度可裁剪、低资源占用、界面美观且易用的嵌入式系统图形库

官网 · 文档 · 论坛 · 服务 · 例程

English | 中文 | Português do Brasil


目录

概况与总览

特性

  • 丰富且强大的模块化图形组件:按钮 (buttons)、图表 (charts)、列表 (lists)、滑动条 (sliders)、图片 (images) 等
  • 高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等效果
  • 支持多种输入设备:触摸屏、 键盘、编码器、按键等
  • 支持多显示设备
  • 不依赖特定的硬件平台,可以在任何显示屏上运行
  • 配置可裁剪最低资源占用64 kB Flash16 kB RAM
  • 基于UTF-8的多语种支持例如中文、日文、韩文、阿拉伯文等
  • 可以通过类CSS的方式来设计、布局图形界面(例如:FlexboxGrid
  • 支持操作系统、外置内存、以及硬件加速LVGL已内建支持STM32 DMA2D、SWM341 DMA2D、NXP PXP和VGLite
  • 即便仅有单缓冲区(frame buffer)的情况下,也可保证渲染如丝般顺滑
  • 全部由C编写完成并支持C++调用
  • 支持Micropython编程参见LVGL API in Micropython
  • 支持模拟器仿真,可以无硬件依托进行开发
  • 丰富详实的例程
  • 详尽的文档以及API参考手册可线上查阅或可下载为PDF格式

硬件要求

要求 最低要求 建议要求
架构 16、32、64位微控制器或微处理器
时钟 > 16 MHz > 48 MHz
Flash/ROM > 64 kB > 180 kB
Static RAM > 16 kB > 48 kB
Draw buffer > 1 × hor. res. pixels > 1/10屏幕大小
编译器 C99或更新

注意:资源占用情况与具体硬件平台、编译器等因素有关,上表中仅给出参考值

已经支持的平台

LVGL本身并不依赖特定的硬件平台任何满足LVGL硬件配置要求的微控制器均可运行LVGL。 如下仅列举其中一部分:

LVGL也支持

如何入门

请按照如下顺序来学习LVGL

  1. 使用网页在线例程来体验LVGL3分钟
  2. 阅读文档简介章节来初步了解LVGL5分钟
  3. 再来阅读一下文档快速快速概览章节来了解LVGL的基本知识15分钟
  4. 学习如何使用模拟器来在电脑上仿真LVGL10分钟
  5. 试着动手实践一些例程
  6. 参考移植指南尝试将LVGL移植到一块开发板上LVGL也已经提供了一些移植好的工程
  7. 仔细阅读文档总览章节来更加深入的了解和熟悉LVGL2-3小时
  8. 浏览文档组件(Widgets)章节来了解如何使用它们
  9. 如果你有问题可以到LVGL论坛提问
  10. 阅读文档如何向社区贡献章节来看看你能帮LVGL社区做些什么以促进LVGL软件质量的不断提高15分钟

例程

更多例程请参见 examples 文件夹。

LVGL button with label example

C

lv_obj_t * btn = lv_btn_create(lv_scr_act());                   /*Add a button to the current screen*/
lv_obj_set_pos(btn, 10, 10);                                    /*Set its position*/
lv_obj_set_size(btn, 100, 50);                                  /*Set its size*/
lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_CLICKED, NULL); /*Assign a callback to the button*/

lv_obj_t * label = lv_label_create(btn);                        /*Add a label to the button*/
lv_label_set_text(label, "Button");                             /*Set the labels text*/
lv_obj_center(label);                                           /*Align the label to the center*/
...

void btn_event_cb(lv_event_t * e)
{
  printf("Clicked\n");
}

Micropython

更多信息请到 Micropython官网 查询.

def btn_event_cb(e):
  print("Clicked")

# Create a Button and a Label
btn = lv.btn(lv.scr_act())
btn.set_pos(10, 10)
btn.set_size(100, 50)
btn.add_event_cb(btn_event_cb, lv.EVENT.CLICKED, None)

label = lv.label(btn)
label.set_text("Button")
label.center()

服务

LVGL 责任有限公司成立的目的是为了给用户使用LVGL图形库提供额外的技术支持我们致力于提供以下服务

  • 图形设计
  • UI设计
  • 技术咨询以及技术支持

更多信息请参见 https://lvgl.io/services ,如果有任何问题请随时联系我们。

如何向社区贡献

LVGL是一个开源项目非常欢迎您参与到社区贡献当中。您有很多种方式来为提高LVGL贡献您的一份力量包括但不限于

  • 介绍你基于LVGL设计的作品或项目
  • 写一些例程
  • 修改以及完善文档
  • 修复bug

请参见文档如何向社区贡献章节来获取更多信息。