LVGL基础

1.对象

(1)概述

在 LVGL 中,用户界面的基本构建块对象,也称为 Widgets。 例如 button、label、image。lsit…..

所有的对象都使用lv_obj_t这个类型的指针作为句柄(类似于C++中的Base),通过该指针来获取对象的各种信息

(2)对象的属性

对象的属性包括:基本属性、特定属性

所有对象类型共享一些基本属性

  • 位置

  • 尺寸

  • parent

  • 样式

  • 事件处理程序

  • 等等

您可以使用 lv_obj_set_... 和 lv_obj_get_... 函数设置/获取这些属性

对象类型也有特殊的属性。例如,一个滑块有

  • 最小值和最大值

  • 当前值

对于这些特殊的属性,每个对象类型都可能有唯一的 API 函数。例如对于滑块

lv_slider_set_range(slider1, 0, 100);

(3)工作机制

父对象可以被视为其子对象的容器。每个对象只有一个父对象(屏幕除外),但一个父对象可以有任意数量的子对象。

如果父节点的位置发生变化,子节点将与父节点一起移动。 因此,所有位置都相对于父级。

(4)对象的创建

对象的创建的API:

lv_obj_t * lv_<widget>_create(lv_obj_t * parent, <other paramaters>);

<widget>表示组件的类型,比如创建按键就用lv_btn_create(),创建普通对象就用lv_obj_create(),不管创建什么对象,都返回一个``lv_obj_t *`指针

  • 在创建任何对象之前,必须在当前的活跃窗口上创建一个屏幕对象作为其他所有对象的父对象。lv_obj_t* screen = lv_obj_create(lv_scr_act());
(5)对象的删除

对象删除的API:

void lv_obj_del(lv_obj_t * obj);

  • lv_obj_del 将立即删除对象。 如果由于任何原因你不能立即删除对象,你可以使用 lv_obj_del_async(obj) 它将在下一次调用 lv_timer_handler() 时执行删除。 这很有用,例如如果您想在子对象的 LV_EVENT_DELETE 处理程序中删除对象的父对象。

  • 您可以使用 lv_obj_clean(obj) 删除对象的所有子项(但不是对象本身)。

  • 您可以使用 lv_obj_del_delayed(obj, 1000) 来延时删除对象。延迟以毫秒表示。

(6)屏幕对象

屏幕是没有父对象的对象,可以通过lv_obj_t * scr1 = lv_obj_create(NULL);来创建。

每个显示器上总是有一个活动屏幕。默认情况下,LVGL的操作会显示在这个活动屏幕上。可以用lv_scr_act()获得指向该对象的指针。

切换活跃屏幕(将显示的屏幕)

1
2
3
lv_obj_t* scr = lv_scr_act();
lv_obj_t* scr1 = lv_obj_create(NULL);
lv_scr_load(scr1)

这样,最后显示的是scr1而不是scr