acid-drop- Hacking the planet from a LilyGo T-Deck using custom firmware |
git clone git://git.acid.vegas/acid-drop.git |
Log | Files | Refs | Archive | README | LICENSE |
README_zh.md (8333B)
1 <h1 align="center"> LVGL - Light and Versatile Graphics Library</h1> 2 <h2 align="center"> LVGL - 轻量级通用型图形库</h2> 3 4 5 6 <p align="center"> 7 <img src="https://lvgl.io/assets/images/lvgl_widgets_demo.gif"> 8 </p> 9 <p align="center"> 10 LVGL是一个高度可裁剪、低资源占用、界面美观且易用的嵌入式系统图形库 11 </p> 12 13 14 <h4 align="center"> 15 <a href="https://lvgl.io">官网</a> · 16 <a href="https://docs.lvgl.io/">文档</a> · 17 <a href="https://forum.lvgl.io">论坛</a> · 18 <a href="https://lvgl.io/services">服务</a> · 19 <a href="https://docs.lvgl.io/master/examples.html">例程</a> 20 </h4> 21 22 23 [English](./README.md) | **中文** | 24 25 26 --- 27 28 #### 目录 29 - [概况与总览](#概况与总览) 30 - [如何入门](#如何入门) 31 - [例程](#例程) 32 - [服务](#服务) 33 - [如何向社区贡献](#如何向社区贡献) 34 35 ## 概况与总览 36 ### 特性 37 * 丰富且强大的模块化[图形组件](https://docs.lvgl.io/master/widgets/index.html):按钮 (buttons)、图表 (charts)、列表 (lists)、滑动条 (sliders)、图片 (images) 等 38 * 高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等效果 39 * 支持多种[输入设备](https://docs.lvgl.io/master/overview/indev.html):触摸屏、 键盘、编码器、按键等 40 * 支持[多显示设备](https://docs.lvgl.io/master/overview/display.html) 41 * 不依赖特定的硬件平台,可以在任何显示屏上运行 42 * 配置可裁剪(最低资源占用:64 kB Flash,16 kB RAM) 43 * 基于UTF-8的多语种支持,例如中文、日文、韩文、阿拉伯文等 44 * 可以通过[类CSS](https://docs.lvgl.io/master/overview/style.html)的方式来设计、布局图形界面(例如:[Flexbox](https://docs.lvgl.io/master/layouts/flex.html)、[Grid](https://docs.lvgl.io/master/layouts/grid.html)) 45 * 支持操作系统、外置内存、以及硬件加速(LVGL已内建支持STM32 DMA2D、NXP PXP和VGLite) 46 * 即便仅有[单缓冲区(frame buffer)](https://docs.lvgl.io/master/porting/display.html)的情况下,也可保证渲染如丝般顺滑 47 * 全部由C编写完成,并支持C++调用 48 * 支持Micropython编程,参见:[LVGL API in Micropython](https://blog.lvgl.io/2019-02-20/micropython-bindings) 49 * 支持[模拟器](https://docs.lvgl.io/master/get-started/platforms/pc-simulator.html)仿真,可以无硬件依托进行开发 50 * 丰富详实的[例程](https://github.com/lvgl/lvgl/tree/master/examples) 51 * 详尽的[文档](http://docs.lvgl.io/)以及API参考手册,可线上查阅或可下载为PDF格式 52 53 ### 硬件要求 54 55 <table> 56 <tr> 57 <td> <strong>要求</strong> </td> 58 <td><strong>最低要求</strong></td> 59 <td><strong>建议要求</strong></td> 60 </tr> 61 <tr> 62 <td><strong>架构</strong></td> 63 <td colspan="2">16、32、64位微控制器或微处理器</td> 64 </tr> 65 <tr> 66 <td> <strong>时钟</strong></td> 67 <td> > 16 MHz</td> 68 <td> > 48 MHz</td> 69 </tr> 70 71 <tr> 72 <td> <strong>Flash/ROM</strong></td> 73 <td> > 64 kB </td> 74 <td> > 180 kB</td> 75 </tr> 76 77 <tr> 78 <td> <strong>Static RAM</strong></td> 79 <td> > 16 kB </td> 80 <td> > 48 kB</td> 81 </tr> 82 83 <tr> 84 <td> <strong>Draw buffer</strong></td> 85 <td> > 1 × <em>hor. res.</em> pixels </td> 86 <td> > 1/10屏幕大小 </td> 87 </tr> 88 89 <tr> 90 <td> <strong>编译器</strong></td> 91 <td colspan="2"> C99或更新 </td> 92 </tr> 93 </table> 94 95 *注意:资源占用情况与具体硬件平台、编译器等因素有关,上表中仅给出参考值* 96 97 ### 已经支持的平台 98 LVGL本身并不依赖特定的硬件平台,任何满足LVGL硬件配置要求的微控制器均可运行LVGL。 99 如下仅列举其中一部分: 100 101 - NXP: Kinetis, LPC, iMX, iMX RT 102 - STM32F1, STM32F3, STM32F4, STM32F7, STM32L4, STM32L5, STM32H7 103 - Microchip dsPIC33, PIC24, PIC32MX, PIC32MZ 104 - [Linux frame buffer](https://blog.lvgl.io/2018-01-03/linux_fb) (/dev/fb) 105 - [Raspberry Pi](http://www.vk3erw.com/index.php/16-software/63-raspberry-pi-official-7-touchscreen-and-littlevgl) 106 - [Espressif ESP32](https://github.com/lvgl/lv_port_esp32) 107 - [Infineon Aurix](https://github.com/lvgl/lv_port_aurix) 108 - Nordic NRF52 Bluetooth modules 109 - Quectel modems 110 111 LVGL也支持: 112 - [Arduino library](https://docs.lvgl.io/master/get-started/platforms/arduino.html) 113 - [PlatformIO package](https://platformio.org/lib/show/12440/lvgl) 114 - [Zephyr library](https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_LVGL.html) 115 - [ESP32 component](https://docs.lvgl.io/master/get-started/platforms/espressif.html) 116 - [NXP MCUXpresso component](https://www.nxp.com/design/software/embedded-software/lvgl-open-source-graphics-library:LITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY) 117 - [NuttX library](https://docs.lvgl.io/master/get-started/os/nuttx.html) 118 - [RT-Thread RTOS](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/packages-manual/lvgl-docs/introduction) 119 120 121 ## 如何入门 122 请按照如下顺序来学习LVGL: 123 1. 使用[网页在线例程](https://lvgl.io/demos)来体验LVGL(3分钟) 124 2. 阅读文档[简介](https://docs.lvgl.io/master/intro/index.html)章节来初步了解LVGL(5分钟) 125 3. 再来阅读一下文档快速[快速概览](https://docs.lvgl.io/master/get-started/quick-overview.html)章节来了解LVGL的基本知识(15分钟) 126 4. 学习如何使用[模拟器](https://docs.lvgl.io/master/get-started/platforms/pc-simulator.html)来在电脑上仿真LVGL(10分钟) 127 5. 试着动手实践一些[例程](https://github.com/lvgl/lvgl/tree/master/examples) 128 6. 参考[移植指南](https://docs.lvgl.io/master/porting/index.html)尝试将LVGL移植到一块开发板上,LVGL也已经提供了一些移植好的[工程](https://github.com/lvgl?q=lv_port_) 129 7. 仔细阅读文档[总览](https://docs.lvgl.io/master/overview/index.html)章节来更加深入的了解和熟悉LVGL(2-3小时) 130 8. 浏览文档[组件(Widgets)](https://docs.lvgl.io/master/widgets/index.html)章节来了解如何使用它们 131 9. 如果你有问题可以到LVGL[论坛](http://forum.lvgl.io/)提问 132 10. 阅读文档[如何向社区贡献](https://docs.lvgl.io/master/CONTRIBUTING.html)章节来看看你能帮LVGL社区做些什么,以促进LVGL软件质量的不断提高(15分钟) 133 134 ## 例程 135 136 更多例程请参见 [examples](https://github.com/lvgl/lvgl/tree/master/examples) 文件夹。 137 138 ![LVGL button with label example](https://github.com/lvgl/lvgl/raw/master/docs/misc/btn_example.png) 139 140 ### C 141 ```c 142 lv_obj_t * btn = lv_btn_create(lv_scr_act()); /*Add a button to the current screen*/ 143 lv_obj_set_pos(btn, 10, 10); /*Set its position*/ 144 lv_obj_set_size(btn, 100, 50); /*Set its size*/ 145 lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_CLICKED, NULL); /*Assign a callback to the button*/ 146 147 lv_obj_t * label = lv_label_create(btn); /*Add a label to the button*/ 148 lv_label_set_text(label, "Button"); /*Set the labels text*/ 149 lv_obj_center(label); /*Align the label to the center*/ 150 ... 151 152 void btn_event_cb(lv_event_t * e) 153 { 154 printf("Clicked\n"); 155 } 156 ``` 157 ### Micropython 158 更多信息请到 [Micropython官网](https://docs.lvgl.io/master/get-started/bindings/micropython.html) 查询. 159 ```python 160 def btn_event_cb(e): 161 print("Clicked") 162 163 # Create a Button and a Label 164 btn = lv.btn(lv.scr_act()) 165 btn.set_pos(10, 10) 166 btn.set_size(100, 50) 167 btn.add_event_cb(btn_event_cb, lv.EVENT.CLICKED, None) 168 169 label = lv.label(btn) 170 label.set_text("Button") 171 label.center() 172 ``` 173 174 ## 服务 175 LVGL 责任有限公司成立的目的是为了给用户使用LVGL图形库提供额外的技术支持,我们致力于提供以下服务: 176 177 - 图形设计 178 - UI设计 179 - 技术咨询以及技术支持 180 181 更多信息请参见 https://lvgl.io/services ,如果有任何问题请随时联系我们。 182 183 184 ## 如何向社区贡献 185 LVGL是一个开源项目,非常欢迎您参与到社区贡献当中。您有很多种方式来为提高LVGL贡献您的一份力量,包括但不限于: 186 187 - 介绍你基于LVGL设计的作品或项目 188 - 写一些例程 189 - 修改以及完善文档 190 - 修复bug 191 192 请参见文档[如何向社区贡献](https://docs.lvgl.io/master/CONTRIBUTING.html)章节来获取更多信息。