【LVGL- 基础对象(lv_obj_t)】

■ LVGL-border-box 模型

在这里插入图片描述

属性描述
边界(bounding)元素的宽度/高度围起来的区域(整个盒子)。
边框(border)边框有大小和颜色等属性(相当于盒子的厚度和它的颜色)。
填充(padding)对象两侧与其子对象之间的空间(盒子的填充物)。
内容(content)如果边界框按边框宽度和填充的大小缩小,则显示其大小的内容区域(盒子实际装东西的区域)。
轮廓(outline)LVGL中没有外边距(margin)的概念(盒子之间的距离),确认代之的是轮廓(outline)。
它是绘制于元素(盒子)周围的一条线,它不占据空间,位于边框边缘的外围,可起到突出元素(盒子)的作用。
在浏览器里,当鼠标点击或使用Tab键让一个选项或者一个图片获得焦点的时候,这个元素就会多了一个轮廓框围绕。轮廓(outline)

LVGL的盒子模型是我们理解对象(部件)的组成,修改对象的样式,实现对对象的布局、处理对象排列等等的关键。

盒子模型模型实例对比

/******************/
lv_obj_t* obj1 = lv_line_create(ui_ContainerRight);
static lv_point_t line_points[] = { {50, 50}, {150, 50} };
lv_line_set_points(obj1, line_points, sizeof(line_points) / sizeof(lv_point_t));

/******************/
lv_obj_t* obj2 = lv_obj_create(ui_ContainerRight);
lv_obj_set_pos(obj2,50,70);
lv_obj_set_width(obj2,  100);
lv_obj_set_height(obj2, 50);
lv_obj_set_style_line_color(obj2, lv_color_black(), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_line_width(obj2, 10, LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_line_opa(obj2, 255 ,LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_line_rounded(obj2, 255 ,LV_PART_MAIN | LV_STATE_DEFAULT );

/******************/
lv_obj_t* obj3 = lv_obj_create(ui_ContainerRight);
lv_obj_set_pos(obj3,50,130);
lv_obj_set_width(obj3,  100);
lv_obj_set_height(obj3, 50);
lv_obj_set_style_border_color(obj3, lv_color_black(), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_width(obj3, 10, LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_border_opa(obj3, 255 ,LV_PART_MAIN | LV_STATE_DEFAULT );


/******************/
lv_obj_t* obj4 = lv_obj_create(ui_ContainerRight);
lv_obj_set_pos(obj4,50,200);
lv_obj_set_width(obj4,  100);
lv_obj_set_height(obj4, 50);
lv_obj_set_style_outline_color(obj4, lv_color_black(), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_outline_width(obj4, 10, LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_outline_opa(obj4, 255 ,LV_PART_MAIN | LV_STATE_DEFAULT );

/******************/
lv_obj_t* obj5 = lv_obj_create(ui_ContainerRight);
lv_obj_set_pos(obj5,50,270);
lv_obj_set_width(obj5,  100);
lv_obj_set_height(obj5, 50);
lv_obj_set_style_arc_color(obj5, lv_color_black(), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_arc_width(obj5, 10, LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_arc_opa(obj5, 255 ,LV_PART_MAIN | LV_STATE_DEFAULT );

显示结果:
在这里插入图片描述
边框 宽度
lv_obj_set_style_border_width(pppppppp2, 10, LV_PART_MAIN | LV_STATE_DEFAULT);

lv_obj_t *pppppppp = lv_label_create(ui_EBKV_Containe_Body);
lv_obj_set_pos(pppppppp,100,100);
lv_obj_set_size(pppppppp, 130, 60);
lv_label_set_text(pppppppp, "book 1");
lv_obj_set_style_text_color(pppppppp, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(pppppppp, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(pppppppp, &lv_font_montserrat_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(pppppppp, lv_color_hex(0x4ea7d1), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(pppppppp, 255, LV_PART_MAIN | LV_STATE_DEFAULT); //加上这句上面有效果
lv_obj_set_style_border_color(pppppppp, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_width(pppppppp, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(pppppppp, 255, LV_PART_MAIN | LV_STATE_DEFAULT);

lv_obj_t *pppppppp2 = lv_label_create(ui_EBKV_Containe_Body);
lv_obj_set_pos(pppppppp2,100,170);
lv_obj_set_size(pppppppp2, 130, 60);
lv_label_set_text(pppppppp2, "book 2");
lv_obj_set_style_text_color(pppppppp2, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(pppppppp2, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(pppppppp2, &lv_font_montserrat_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(pppppppp2, lv_color_hex(0x4ea7d1), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(pppppppp2, 255, LV_PART_MAIN | LV_STATE_DEFAULT); //加上这句上面有效果
lv_obj_set_style_border_color(pppppppp2, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_width(pppppppp2, 10, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(pppppppp2, 255, LV_PART_MAIN | LV_STATE_DEFAULT);

在这里插入图片描述
pad设置宽度
lv_obj_set_style_pad_top(pppppppp, 10, LV_PART_MAIN);
lv_obj_set_style_pad_left(pppppppp, 10, LV_PART_MAIN);
lv_obj_set_style_pad_all(pppppppp, 10, LV_PART_MAIN);

int fontHeight1 = lv_font_get_line_height(&lv_font_montserrat_22);
int verPad2 = (60 - fontHeight1)/2;
lv_obj_set_style_pad_top(pppppppp, verPad2, 0);
int textWidth1 = lv_txt_get_width("book 1", strlen("book 1"), &lv_font_montserrat_22, 1,LV_TEXT_FLAG_NONE);
int horPad1 = (130 - textWidth1)/2;
lv_obj_set_style_pad_left(pppppppp, horPad1, 0);
lv_obj_set_style_pad_all(pppppppp, 10, LV_PART_MAIN);

文本居中
lv_obj_set_style_pad_top(pppppppp, verPad2, 0);
lv_obj_set_style_pad_left(pppppppp, horPad1, 0);

lv_obj_t *pppppppp = lv_label_create(ui_EBKV_Containe_Body);
lv_obj_set_pos(pppppppp,100,100);
lv_obj_set_size(pppppppp, 130, 60);
lv_label_set_text(pppppppp, "book 1");
lv_obj_set_style_text_color(pppppppp, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(pppppppp, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(pppppppp, &lv_font_montserrat_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(pppppppp, lv_color_hex(0x4ea7d1), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(pppppppp, 255, LV_PART_MAIN | LV_STATE_DEFAULT); //加上这句上面有效果
lv_obj_set_style_border_color(pppppppp, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_width(pppppppp, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(pppppppp, 255, LV_PART_MAIN | LV_STATE_DEFAULT);

int fontHeight1 = lv_font_get_line_height(&lv_font_montserrat_22);
int verPad2 = (60 - fontHeight1)/2;
lv_obj_set_style_pad_top(pppppppp, verPad2, 0);
int textWidth1 = lv_txt_get_width("book 1", strlen("book 1"), &lv_font_montserrat_22, 1,LV_TEXT_FLAG_NONE);
int horPad1 = (130 - textWidth1)/2;
lv_obj_set_style_pad_left(pppppppp, horPad1, 0);

lv_obj_t *pppppppp2 = lv_label_create(ui_EBKV_Containe_Body);
lv_obj_set_pos(pppppppp2,100,170);
lv_obj_set_size(pppppppp2, 130, 60);
lv_label_set_text(pppppppp2, "book 2");
lv_obj_set_style_text_color(pppppppp2, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(pppppppp2, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(pppppppp2, &lv_font_montserrat_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(pppppppp2, lv_color_hex(0x4ea7d1), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(pppppppp2, 255, LV_PART_MAIN | LV_STATE_DEFAULT); //加上这句上面有效果
lv_obj_set_style_border_color(pppppppp2, lv_color_hex(0x00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_width(pppppppp2, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(pppppppp2, 255, LV_PART_MAIN | LV_STATE_DEFAULT);

在这里插入图片描述

■ LVGL-基础对象(lv_obj_t)就是一个矩形

LVGL (6) 基础对象 Obj 分析

在这里插入图片描述

在这里插入图片描述

示例一:

在这里插入代码片

■ LVGL-(lv_obj_t)基本属性

在这里插入图片描述

■ LVGL-(lv_obj_t)大小

在这里插入图片描述

//大小
lv_obj_set_width(obj, 200);
lv_obj_set_width(btn, lv_pct(50))  //lv_pct(value) 将值转换为百分比
lv_obj_set_width(btn, LV_SIZE_CONTENT) //设置对象的宽度/高度以涉及所有子项的特殊值
lv_obj_set_height(obj, 100);
lv_obj_set_height(obj, lv_pct(100)); //百分比值是根据父内容区域的大小计算的。例如将对象的高度设置为屏幕高度:
lv_obj_set_size(obj, 200, 100); 	//Or in one function
lv_obj_update_layout(obj) //如果您需要获取对象的任何坐标并且坐标刚刚更改,则需要强制 LVGL 重新计算坐标。

scr_act_width()  //获取宽度
scr_act_height() //获取高度

lv_obj_get_width(obj)  //获取宽度
lv_obj_get_height(obj)  //获取高度

lv_obj_update_layout(obj_left);                      /* 手动更新物体的参数 */

■ LVGL-(lv_obj_t)位置

//位置
lv_obj_set_x(obj, 10);
lv_obj_set_y(obj, 20);   
lv_obj_set_pos(obj, 10, 20); 	//Or in one function

■ LVGL-(lv_obj_t)对齐

在这里插入图片描述

//对齐
lv_obj_set_align(obj, align); //lv_obj_set_align(obj, align);
lv_obj_align(obj, align, x, y);        //更改对齐方式并设置新坐标:

在这里插入图片描述

示例一:右对齐
在这里插入图片描述

对齐问题 点 没有完全重合

lv_obj_t *parent = lv_obj_create(lv_scr_act());
lv_obj_set_size(parent,100,100);
lv_obj_set_style_bg_color(parent,lv_palette_main(LV_PALETTE_BLUE),0);
lv_obj_align(parent,LV_ALIGN_CENTER,0,0);

lv_obj_t *child = lv_obj_create(lv_scr_act());
lv_obj_set_size(child,50,50);
lv_obj_set_style_bg_color(child,lv_palette_main(LV_PALETTE_GREEN),0);
lv_obj_align_to(child,parent,LV_ALIGN_BOTTOM_MID,0,0);

没有完全对齐问题
在这里插入图片描述
==添加 lv_obj_set_style_pad_all(parent,0,0); == 后的效果
在这里插入图片描述

■ LVGL-(lv_obj_t)样式

■ 设置样式函数

在这里插入图片描述
设置颜色后一定要设置_bg_opa 才起效

lv_obj_set_style_bg_color(ui_ContainerBody, lv_color_hex(0x73C3EE), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(ui_ContainerBody, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_align_to(ui_ContainerBody,ui_Title,LV_ALIGN_OUT_BOTTOM_MID,0,0);

■ 设置样式枚举

在这里插入图片描述

■ 设置样式(大小,位置,背景,轮廓,边框,阴影,其他)

在这里插入图片描述

void lv_style_set_bg_color(lv_style_t * style, lv_color_t value);			//设置背景颜色
void lv_style_set_bg_color_filtered(lv_style_t * style, lv_color_t value);	//设置背景过滤颜色
void lv_style_set_bg_opa(lv_style_t * style, lv_opa_t value);				//设置背景透明度
void lv_style_set_bg_grad_color(lv_style_t * style, lv_color_t value);		//设置背景下半部颜色
void lv_style_set_bg_grad_color_filtered(lv_style_t * style, lv_color_t value);//设置背景下半部过滤颜色
void lv_style_set_bg_grad_dir(lv_style_t * style, lv_grad_dir_t value);		//设置背景下半部颜色填充方向
void lv_style_set_bg_main_stop(lv_style_t * style, lv_coord_t value);		//主色停止
void lv_style_set_bg_grad_stop(lv_style_t * style, lv_coord_t value);		//下半部色停止
void lv_style_set_bg_img_src(lv_style_t * style, const void * value);		//设置背景图片
void lv_style_set_bg_img_opa(lv_style_t * style, lv_opa_t value);			//设置背景图片透明度
void lv_style_set_bg_img_recolor(lv_style_t * style, lv_color_t value);		//设置背景图片重着色
void lv_style_set_bg_img_recolor_filtered(lv_style_t * style, lv_color_t value);//设置背景图片重着色过滤色
void lv_style_set_bg_img_recolor_opa(lv_style_t * style, lv_opa_t value);	//设置背景图片重着色透明度
void lv_style_set_bg_img_tiled(lv_style_t * style, bool value);				//设置背景图片平铺

static inline void lv_style_set_pad_all(lv_style_t * style, lv_coord_t value);	//四边内边距
static inline void lv_style_set_pad_hor(lv_style_t * style, lv_coord_t value);	//水平内边距 左右相同
static inline void lv_style_set_pad_ver(lv_style_t * style, lv_coord_t value);	//竖直内边距 上下相同
static inline void lv_style_set_pad_gap(lv_style_t * style, lv_coord_t value);	//差距内边距 行列相同

lv_obj_set_style_pad_left(ui_LabelLine3_2, 10, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui_LabelLine3_2, 10, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_top(ui_LabelLine3_2, 10, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui_LabelLine3_2, 10, LV_PART_MAIN | LV_STATE_DEFAULT);


void lv_style_set_border_color(lv_style_t * style, lv_color_t value);			//设置样式边框颜色
void lv_style_set_border_color_filtered(lv_style_t * style, lv_color_t value);	//设置样式边框过滤颜色
void lv_style_set_border_opa(lv_style_t * style, lv_opa_t value);			    //设置样式边框透明度
void lv_style_set_border_width(lv_style_t * style, lv_coord_t value);			//设置样式边框宽度
void lv_style_set_border_side(lv_style_t * style, lv_border_side_t value);		//设置样式边框显示范围
void lv_style_set_border_post(lv_style_t * style, bool value);					//设置样式边框柱
	LV_BORDER_SIDE_NONE 		//无边框
	LV_BORDER_SIDE_BOTTOM      	//底部边框
	LV_BORDER_SIDE_TOP      	//顶部边框
	LV_BORDER_SIDE_LEFT      	//左边边框    
	LV_BORDER_SIDE_RIGHT       	//右边边框  
	LV_BORDER_SIDE_FULL       	//四周边框
	LV_BORDER_SIDE_INTERNAL     //边境一侧内部




lv_style_set_radius(&style, 5);
lv_style_set_bg_opa(&style, LV_OPA_COVER);
lv_style_set_bg_color(&style, lv_palette_lighten(LV_PALETTE_GREY, 3));
lv_style_set_border_width(&style, 2);
lv_style_set_border_color(&style, lv_palette_main(LV_PALETTE_BLUE));

参考

实例一 outline

static lv_style_t style;                      //创建style
lv_style_init(&style);                        //初始化style

lv_style_set_radius(&style,5);                //设置样式的圆角
lv_style_set_opa(&style,LV_OPA_COVER);        //设置样式背景透明度
lv_style_set_bg_color(&style,lv_palette_lighten(LV_PALETTE_GREY,1));    //设置样式背景颜色

lv_style_set_outline_width(&style,2);          //设置样式轮廓的宽度   
lv_style_set_outline_color(&style,lv_palette_main(LV_PALETTE_BLUE));    //设置样式轮廓颜色
lv_style_set_outline_pad(&style,5);            //设置样式轮廓的边距

lv_obj_t * obj = lv_obj_create(lv_scr_act());  //创建对象
lv_obj_add_style(obj,&style, 0);               //将样式添加到对象中  
lv_obj_center(obj);                            //居中对象

显示结果;
在这里插入图片描述
实例二 border

static lv_style_t style;                       //创建style
lv_style_init(&style);                         //初始化style

lv_style_set_radius(&style,5);                 //设置样式的圆角
lv_style_set_opa(&style,LV_OPA_50);            //设置样式背景透明度
lv_style_set_bg_color(&style,lv_palette_lighten(LV_PALETTE_BLUE_GREY,1));  //设置样式背景颜色

lv_style_set_border_color(&style,lv_palette_main(LV_PALETTE_BLUE));        //设置样式边框颜色
lv_style_set_border_width(&style,5);                  //设置样式边框宽度
lv_style_set_border_opa(&style,LV_OPA_30);            //设置样式边框透明度
lv_style_set_border_side(&style,LV_BORDER_SIDE_FULL); //设置样式边框显示范围

lv_obj_t * obj = lv_obj_create(lv_scr_act());              //创建对象
lv_obj_add_style(obj,&style, 0);               //将样式添加到对象中  
lv_obj_center(obj);                            //居中对象

在这里插入图片描述

实例三 border左上下右边框

lv_obj_set_style_radius(ui_ImageBig,10,LV_PART_MAIN);
lv_obj_set_style_border_color(ui_ImageBig, lv_color_white(), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_width(ui_ImageBig, 2, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui_ImageBig, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui_ImageBig,LV_BORDER_SIDE_BOTTOM | LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_LEFT,LV_PART_MAIN | LV_STATE_DEFAULT);

实例四 实现圆角功能

 lv_obj_t* ui_main = lv_obj_create(lv_scr_act());
 lv_obj_remove_style_all(ui_main);
 lv_obj_set_size(ui_main, 400, 400);
 lv_obj_set_style_bg_color(ui_main, lv_color_hex(0xdc7878), LV_PART_MAIN);
 lv_obj_set_style_bg_opa(ui_main, 255, LV_PART_MAIN);
 lv_obj_set_style_radius(ui_main, 12, LV_PART_MAIN);
 lv_obj_set_y(ui_main, 76);
 lv_obj_center(ui_main);

 lv_obj_t* ui_radius = lv_obj_create(ui_main); // 矩形
 lv_obj_remove_style_all(ui_radius);
 lv_obj_set_size(ui_radius, 400, 12);
 lv_obj_set_style_bg_color(ui_radius, lv_color_hex(0xdc7878), LV_PART_MAIN);
 lv_obj_set_style_bg_opa(ui_radius, 255, LV_PART_MAIN);
 lv_obj_set_align(ui_radius, LV_ALIGN_BOTTOM_LEFT);

在这里插入图片描述

■ 设置控件子控件样式

知识点一:要单独设置某个控件的样式怎么区分呢? LVGL 为每个控件都有定义某个部分
在这里插入图片描述

知识点二:这里可以查询每个控件对应的枚举值。
在这里插入图片描述

示例一:设置控件两个子控件两个枚举的背景色
在这里插入图片描述
结果:指示器手柄和滑块都设置为绿色
在这里插入图片描述

示例二:使用样式设置对象大小

使用样式设置对象大小的示例:
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-(lv_obj_t)事件

在这里插入图片描述

■ 点击事件

在这里插入图片描述

■ 一个obj添加多个事回调函数

static void scr_event_handle(lv_event_t* e){
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t *target = lv_event_get_target(e);
	char *cur_ssid = NULL;
    printf("shine 12 %s,%d,code = %d\n", __func__, __LINE__, code);
    if (code == LV_EVENT_SCREEN_LOADED) {
    }
}

static void mainpage_scr_event_handle(lv_event_t *e){
    lv_event_code_t code = lv_event_get_code(e);
    printf("shine 13 %s,%d,code = %d\n", __func__, __LINE__, code);
    if(code == LV_EVENT_SCREEN_LOADED){
        projector_set_some_sys_param(P_CUR_CHANNEL, SCREEN_CHANNEL_MAIN_PAGE);
        lv_group_set_default(main_page_g);
    }else if(code == LV_EVENT_SCREEN_UNLOADED){
        win_msgbox_msg_close();
    }
}

lv_obj_add_event_cb(main_page_scr, scr_event_handle, LV_EVENT_ALL, 0); 
lv_obj_add_event_cb(main_page_scr, mainpage_scr_event_handle, LV_EVENT_ALL, 0);

■ 多个对象可以使用一个回调函数

多个对象可以使用一个回调函数
void my_event_cb(lv_obj_t * obj, lv_event_t event)
{
	switch(event){
	case LV_EVENT_PRESSED:              /* 对象被按下 */
	    printf("Pressed\n");
	    break;
	case LV_EVENT_SHORT_CLICKED:        /* 对象被短点击 */
	    printf("Short clicked\n");
	  	break;
	case LV_EVENT_CLICKED:              /* 对象被点击 */
	    printf("Clicked\n");
	    break;
	}
}  
/* 指定一个事件回调函数 */
lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL);
lv_obj_set_event_cb(btn, my_event_cb);    

■ 不同的事件类型共用一个事件回调函数

在这里插入图片描述

■ 事件回调中使用lv_event_cb()函数区分不同对象的事件

在这里插入图片描述

■ LVGL-区域边界设置

lv_obj_set_ext_click_area(lv_obj_t * obj, lv_coord_t size) | 用户必须要在区域边界内点击对象,这样才能成功触发事件

■ LVGL-父和子对象的关系

在这里插入图片描述

示例一:switch2 在switch1里面。
在这里插入图片描述

■ LVGL-基础对象API 函数

| 属性 | 描述 |

函数描述
lv_obj_create ()创建基础对象(矩形)
lv_obj_set_user_data()设置对象的 user_data 字段
lv_obj_has_flag()检查是否在对象上设置了指定的标志
lv_obj_has_flag_any()检查是否在对象上设置了任何标志
lv_obj_get_state()获取对象的状态
lv_obj_has_state()检查对象是否处于指定状态
lv_obj_get_group()获取对象的组
lv_obj_get_user_data()获取对象的用户数据
lv_obj_allocate_spec_attr()为对象分配特殊数据(还未分配时)
lv_obj_check_type()检查 obj 的类型
lv_obj_has_class()检查是否有任何对象具有指定的类
lv_obj_get_class()获取对象的类
lv_obj_is_valid()检查是否有任何对象在活动
lv_obj_set_ext_click_area(lv_obj_t * obj, lv_coord_t size)用户必须要在区域边界内点击对象,这样才能成功触发事件
  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光芒Shine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值