【LVGL】【阶段总结1】

LVGL是一个强大的图形库,其基础是lv_obj对象。对象包含位置、大小、父类、风格等基本属性,可以通过lv_obj_set_...和lv_obj_get_...函数进行设置和获取。位置和大小可以用绝对值或相对于父级内容区域的百分比来设定。对齐方式有多种,包括参照父类或使用预定义的对齐函数。样式用于定制对象外观,包括位置、大小等属性。LVGL提供多种核心控件,如按钮、进度条、标签等,适用于各种界面设计需求。

基础对象(lv_obj)

其中,所有的对象都使用 lv_obj_t 类型的指针定义

对象所拥有的基本属性

  • 位置(Position)
  • 大小(Size)
  • 父类(Parent)
  • 风格(Styles)
  • 时间处理程序(Event handlers)
  • Etc

设置属性,获取属性 lv_obj_set_...lv_obj_get_...

lv_obj_set_size(btn1, 100, 50);	  /*Set a button's size*/
lv_obj_set_pos(btn1, 20,30);      /*Set a button's position*/

设置位置(Position)

默认情况下,x 和 y 坐标是从父级内容区域的左上角开始测量的。

lv_obj_set_pos(obj,100, 100);    //X、Y

lv_obj_set_x(obj, 200);
lv_obj_set_y(obj, 50);

百分比值是根据父级的内容区域大小计算的。

lv_obj_set_x(btn, lv_pct(10)); //x = 10 % of parent content area width

设置大小(Size)

lv_obj_set_size(obj, 100, 100);    //宽、高

lv_obj_set_width(obj, 300);  
lv_obj_set_height(obj, 500); 

百分比值是根据父级的内容区域大小计算的。

lv_obj_set_height(obj, lv_pct(100));

设置内容区域的大小

lv_obj_set_content_width(obj, 50); //The actual width: padding left + 50 + padding right
lv_obj_set_content_height(obj, 30); //The actual width: padding top + 30 + padding bottom

检索边界框和内容区域的大小

lv_coord_t w = lv_obj_get_width(obj);
lv_coord_t h = lv_obj_get_height(obj);
lv_coord_t content_w = lv_obj_get_content_width(obj);
lv_coord_t content_h = lv_obj_get_content_height(obj);

对齐方式(Alignment)

两种对齐方式,第一种是参照父类

lv_obj_align(obj, base, LV_ALIGN_CENTER, 10, 10);
//函数原型
void lv_obj_align(lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs)
//另一函数
void lv_obj_align_to(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs)
//不需要偏移
lv_obj_set_align(obj, align);
  • obj:要设置的对象
  • base:参照对象
  • align:对齐方式
  • x_ofs:X偏移量
  • y_ofs:Y偏移量

将对象与父级中心对齐很常见,创立了专门函数

lv_obj_center(obj);

样式(Using styles)

位置、大小、对齐属性都是样式属性!!!

属性示例:

static lv_style_t style;
lv_style_init(&style);
lv_style_set_width(&style, 100);

lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_add_style(btn, &style, LV_PART_MAIN);

LVGL控件

LVGL是以对象为概念的。基础的对象为 lv_obj 控件。其他空间都是 lv_obj 控件的衍生。

核心控件

名称中文名表示简介
Arclv_arc
Bar进度条lv_bar
Button按键lv_btn
Button matrix按键矩阵lv_btnmatrix
Canvas画布lv_canvas
Checkbox复选框lv_checkbox
Drop-down list下拉列表lv_dropdown
Image图片lv_img
Label标签lv_label
Line线lv_line
Roller滚动条lv_roller
Slider滑块lv_slider
Switch开关lv_switch
Table表格lv_table
Test area文本区域lv_textarea

额外控件

名称中文名表示简介
Animation Image动画图像lv_animimg
Calendar日历lv_calendar
Chart图表lv_chart
Color wheel颜色选择器lv_colorwheel
Image button图片按键lv_imgbtn
Keyboard键盘lv_keyboard
LEDLEDlv_led
List列表lv_list
Menu菜单lv_menu
Meter仪表lv_meter
Message box消息框lv_msgbox
Span跨度lv_span
Spinbox微调lv_spinbox
Spinner环形加载lv_spinner
Tabview标签视图lv_tabview
Tile view网格切换lv_tileview
Window窗口lv_win
<think>好的,用户想寻找关于LVGL的学习资料和教程。首先,我需要回忆之前提供的引用内容,看看有哪些资源可以推荐。根据引用1,有一个适合有LVGL开发基础的课程,可能适合用户入门。引用2提到了LVGL v8的中文教程资源下载,项目地址也给出了,这个应该很实用。引用3提到LVGL的中文教程手册,以及公司的背景信息,可能对用户理解LVGL的发展有帮助。引用4是关于使用GIF库的具体应用案例,可能对进阶学习有用。 接下来,我需要按照用户的要求整理这些信息。用户需要教程和资源,所以应该分点列出,每个资源附上描述和链接。同时,用户可能对学习路径有疑问,比如是否需要基础,所以可能需要推荐学习顺序。另外,用户可能想了解学习社区和案例,所以也需要包括这些内容。 需要确保回答结构清晰,按照资源类型分类,比如官方文档、中文教程、视频课程、开源项目等。同时,每个部分要简明扼要,突出资源的特点和适用人群。最后,生成相关问题,帮助用户进一步探索,比如如何配置环境、移植到硬件、优化性能等。 要注意使用中文回答,并且正确应用引用标识。比如引用1和引用2对应不同的资源,需要正确标注。另外,用户的问题是关于寻找资料,所以回答要侧重于资源推荐,而不是具体的技术细节。需要检查是否有遗漏的资源,比如是否还有其他引用内容中的信息可以利用。 总结,回答应包括官方文档、中文教程、视频课程、开源项目、社区支持以及学习建议,每个部分引用对应的资料,最后生成相关问题供用户参考。这样用户可以根据自己的需求选择合适的学习路径。</think>以下是为您整理的LVGL学习资源指南,包含中文教程、文档和实践案例: ### 一、官方核心资源 1. **LVGL官方文档** 提供完整的API说明和开发指南,涵盖从基础控件到高级动画的实现,建议作为核心参考资料[^3]。 2. **LVGL GitHub仓库** 包含最新源码、示例程序和移植指南: $$ \text{https://github.com/lvgl/lvgl} $$ --- ### 二、中文专项教程 1. **LVGL v8中文教程(重点推荐)** - 详细讲解控件使用、事件处理、样式配置等核心功能 - 包含移植指南和性能优化技巧 - 下载地址:https://gitcode.com/Resource-Bundle-Collection/89d43 [^2] 2. **嵌入式UI开发实战课程** - 适合零基础开发者,包含硬件移植实战(STM32/ESP32) - 配套代码案例和开发板适配指南[^1] --- ### 三、拓展学习资料 1. **视频教学资源** - B站搜索"LVGL入门"可找到多个系列教程,如《LVGL8.x从零开发》 2. **开源项目参考** - GIF动效实现案例:https://gitcode.net/m0_62617766/lvgl_gif [^4] - 智能手表UI开源项目:https://github.com/lvgl/lv_demos --- ### 四、学习建议路径 1. 基础阶段:控件使用 → 事件处理 → 样式系统 2. 进阶阶段:动画开发 → 自定义组件 → 性能优化 3. 实战阶段:硬件移植 → 多语言支持 → 复杂UI架构设计 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值