LVGL基础对象如何实现功能?
摘要:引言 仅作笔记分享。 LVGL 编程思想 LVGL 采用的是面向对象的编程思想,以抽象的类来实例化不同的对象(部件) 举例 实现流程 C 语言中没有“类”的概念,LVGL 以结构体的形式来实现“类”的思想。 过程: 使用lv_obj_t结构
引言
仅作笔记分享。
LVGL 编程思想
LVGL 采用的是面向对象的编程思想,以抽象的类来实例化不同的对象(部件)
举例
实现流程
C 语言中没有“类”的概念,LVGL 以结构体的形式来实现“类”的思想。
过程:
使用lv_obj_t结构体实例化一个具体的对象:lv_obj(基础对象),默认就是以当前活动的屏幕作为基础对象。
这个基础对象作为父对象衍生出更多的子对象:lv_switch、lv_lable、lv_slider...这些部件。
父对象衍生出这些子对象后,子对象就会继承很多父对象的属性以及行为,后面就可以用一套同意的 api 函数对这些属性和行为进行管理。
void my_gui(void)
{
lv_obj_t* switch1 = lv_switch_create(lv_scr_act()); // 创建一个在当前活动屏幕作为父对象的子对象开关switch1
lv_obj_set_size(switch_obj, 120, 60); // 设置开关部件大小
lv_obj_t* switch2 = lv_switch_create(switch1); // 可以选择活动屏幕或者前面的switch1来继承,若选择了switch2则与switch2只有命令关系,与活动屏幕才是父子关系
}
现象:
父子对象规律
用一个父对象创建出一个子对象时,父对象就是子对象的容器,子对象装在父对象中。
用一个父对象创建出一个子对象时,子对象默认创建在父对象的左上角。
基础对象简介
基础对象(lv_obj)可以作为父对象,来创建其他对象,同时也可以作为部件使用。
举例
void my_gui(void)
{
lv_obj_t* obj1 = lv_obj_create(lv_scr_act());
lv_obj_set_size(obj1, 300, 400);
}
现象:
父对象和子对象的关系
举例
void my_gui(void)
{
lv_obj_t* obj1 = lv_obj_create(lv_scr_act());
lv_obj_set_size(obj1, 300, 300);
lv_obj_set_pos(obj1, 20, 20);
lv_obj_t *obj2 = lv_obj_create(obj1);
lv_obj_set_pos(obj2, 150, 150);
}
现象:
注意,不显示的区域可以拖动控件画面来看。
