Layers(图层)
Order of creation(图层顺序)
默认情况下,LVGL 在旧对象之上绘制新对象。
例如,假设我们向名为 button1 的父对象添加了一个按钮,然后添加了另一个名为 button2 的按钮。然后 button1(及其子对象)将在背景中并且可以被 button2 及其子对象覆盖。
Bring to the foreground(前台展示)
有两种显式方法可以将对象置于前台:
使用 lv_obj_move_foreground(obj)
明确告诉库将一个对象带到前台。
同样,使用lv_obj_move_background(obj)
移动到背景。
当使用 lv_obj_set_parent(obj, new_parent)
时,obj 将位于 new_parent 的前台。
Top and sys layers(顶层和系统层)
LVGL 使用名为“layer_top”和“layer_sys”的两个特殊层。 两者在显示器的所有屏幕上都是可见的和通用的。 然而,它们不会在多个物理显示器之间共享。
layer_top 始终位于默认屏幕的顶部(lv_scr_act()),而 layer_sys 位于 layer_top 的顶部。
用户可以使用 layer_top 来创建一些随处可见的内容。例如,菜单栏、弹出窗口等。
如果启用了click 属性,那么layer_top 将吸收所有用户点击并充当模态。
lv_obj_set_click(lv_layer_top(), true);
更好理解一点就是:
layer_top 就像手机的通知栏或全局弹窗,无论切换到哪个页面,它都固定显示在最上方;
layer_sys 则像手机的鼠标光标或系统级提示(如加载动画),位于所有内容的最顶层,确保不被遮挡。
layer_sys 也用于 LVGL 的类似目的。例如,它将鼠标光标放在所有图层上方以确保它始终可见。