随笔 - 2649  文章 - 2452  评论 - 0  阅读 - 80424

层(Layers)

层(Layers)

创建顺序(Order of creation)

默认情况下,LVGL在旧对象之上绘制新对象。

例如,假设我们将一个按钮添加到名为button1的父对象,然后再添加另一个名为button2的按钮。然后button1(及其子对象)将位于背景中,并且可以被button2及其子对象覆盖。

../_images/layers.png

/*Create a screen*/
lv_obj_t * scr = lv_obj_create(NULL, NULL);
lv_scr_load(scr);          /*Load the screen*/

/*Create 2 buttons*/
lv_obj_t * btn1 = lv_btn_create(scr, NULL);         /*Create a button on the screen*/
lv_btn_set_fit(btn1, true, true);                   /*Enable automatically setting the size according to content*/
lv_obj_set_pos(btn1, 60, 40);              	   /*Set the position of the button*/

lv_obj_t * btn2 = lv_btn_create(scr, btn1);         /*Copy the first button*/
lv_obj_set_pos(btn2, 180, 80);                    /*Set the position of the button*/

/*Add labels to the buttons*/
lv_obj_t * label1 = lv_label_create(btn1, NULL);	/*Create a label on the first button*/
lv_label_set_text(label1, "Button 1");          	/*Set the text of the label*/

lv_obj_t * label2 = lv_label_create(btn2, NULL);  	/*Create a label on the second button*/
lv_label_set_text(label2, "Button 2");            	/*Set the text of the label*/

/*Delete the second label*/
lv_obj_del(label2);

将对象置于上层(Bring to the foreground)

有四种显式方法可以改变对象所在的层:

  • 函数 lv_obj_move_foreground(obj) 将对象置于最上层,同样的,使用函数 lv_obj_move_background(obj) 将对象置于最下层。
  • 函数 lv_obj_move_up(obj) 将对象向上移动一层,同样的,使用函数 lv_obj_move_down(obj) 将对象向下移动一层。
  • 函数 lv_obj_swap(obj1, obj2) 将两个对象的层交换。
  • 函数 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_add_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE);

layer_sys 在 LVGL 中也用于类似的目的。 例如,它将鼠标光标放在所有图层上方以确保它始终可见。

posted on   AtlasLapetos  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示