本篇文章目录导航
♠♠ LVGL控件-环形加载器、LED、列表、下拉列表
♣♣♣♣ 一、LVGL 环形加载器部件
♦♦♦♦♦♦♦♦ 1.1 环形加载器部件组成部分
♦♦♦♦♦♦♦♦ 1.2 环形加载器部件基本API
♦♦♦♦♦♦♦♦ 1.3 实验小演示(提示当前任务正在加载)
♣♣♣♣ 二、LVGL LED部件
♦♦♦♦♦♦♦♦ 2.1 LED部件组成部分
♦♦♦♦♦♦♦♦ 2.2 LED部件基本API
♦♦♦♦♦♦♦♦ 2.3 实验小演示(心跳灯)
♣♣♣♣ 三、LVGL 列表部件
♦♦♦♦♦♦♦♦ 3.1 列表部件组成部分
♦♦♦♦♦♦♦♦ 3.2 列表部件基本API
♦♦♦♦♦♦♦♦ 3.3 实验小演示
♣♣♣♣ 四、LVGL 下拉列表部件
♦♦♦♦♦♦♦♦ 4.1 下拉列表部件组成部分
♦♦♦♦♦♦♦♦ 4.2 下拉列表部件基本API
♦♦♦♦♦♦♦♦ 4.3 实验小演示
LVGL控件-环形加载器、LED、列表、下拉列表
一、LVGL 环形加载器部件
加载器部件常用于提示当前任务正在加载。
效果图:
1.1 环形加载器部件组成部分
主体(LV_PART_MAIN)
手柄(LV_PART_KNOB)
指示器(LV_PART_INDICATOR)
1.2 环形加载器部件基本API
创建加载器部件:
/* spin_time为指示器旋转一周所需要的时间(ms),arc_length为指示器长度 */
lv_obj_t * spinner = lv_spinner_create(parent, spin_time, arc_length);
/* V9版本 */
lv_obj_t * spinner = lv_spinner_create(parent);
设置圆弧颜色:
lv_obj_set_style_arc_color(spinner, lv_color_hex(0x4a9f00), LV_PART_MAIN); /* 设置主体圆弧颜色 */
lv_obj_set_style_arc_color(spinner, lv_color_hex(0x83bd55), LV_PART_INDICATOR); /* 设置指示器圆弧颜色 */
设置圆弧宽度:
lv_obj_set_style_arc_width(spinner, 30, LV_PART_MAIN); /* 设置主体圆弧宽度 */
lv_obj_set_style_arc_width(spinner, 30, LV_PART_INDICATOR); /* 设置指示器圆弧宽度 */
1.3 实验小演示(提示当前任务正在加载)
void my_gui(void)
{
lv_obj_t *spinner = lv_spinner_create(lv_scr_act()); /* 环形加载器 */
lv_obj_center(spinner); /* 居中环形加载器部件 */
lv_obj_set_style_arc_color(spinner, lv_color_hex(0xffff00), LV_PART_MAIN); /* 设置主体圆弧颜色,黄色 */
lv_obj_set_style_arc_color(spinner, lv_color_hex(0x00ff00), LV_PART_INDICATOR); /* 设置指示器圆弧颜色,绿色 */
lv_obj_set_style_arc_width(spinner, 30, LV_PART_MAIN); /* 设置主体圆弧宽度 */
lv_obj_set_style_arc_width(spinner, 30, LV_PART_INDICATOR); /* 设置指示器圆弧宽度 */
}
演示视频:提示当前任务正在加载
二、LVGL LED部件
LED部件常用于指示控制对象的状态。
效果图:
2.1 LED部件组成部分
主体(LV_PART_MAIN)
2.2 LED部件基本API
创建LED部件:
lv_obj_t *led = lv_led_create(parent); /* 默认是打开状态 */
设置LED颜色、亮度:
lv_led_set_color(led, lv_color_hex(0xff0000)); /* 设置LED颜色 */
lv_led_set_brightness(led, 0); /* 设置LED亮度,范围0~255 */
设置LED状态:
lv_led_on(led); /* 打开LED(设置亮度为255) */
lv_led_off(led); /* 关闭LED(设置亮度为0) */
lv_led_toggle(led); /* 翻转LED状态 */
Tips:打开、关闭LED时,亮度不绝对是255、0,具体要看相关的宏定义(可修改)。
2.3 实验小演示(心跳灯)
lv_obj_t *led;
static void timer_cb(lv_timer_t *timer)
{
lv_led_toggle(led); /* 翻转LED状态 */
}
void my_gui(void)
{
led = lv_led_create(lv_scr_act()); /* 创建LED部件,默认是打开状态 */
lv_obj_center(led); /* 居中环形加载器部件 */
lv_led_set_color(led, lv_color_hex(0x04ff50)); /* 设置LED颜色,绿色 */
lv_led_set_brightness(led, 255); /* 设置LED亮度,范围0~255 */
lv_timer_create(timer_cb, 500, NULL); /* 初始化定时器 */
}
演示视频:LED心跳灯
三、LVGL 列表部件
列表部件常用于多选一的场景,默认会展现多个选项。
效果图:
3.1 列表部件组成部分
主体(LV_PART_MAIN)
滚动条(LV_PART_SCROLLBAR)
3.2 列表部件基本API
创建列表部件:
lv_obj_t *list = lv_list_create(parent);
添加文本列表:
lv_list_add_text(list, "Settings");
添加列表按钮:
lv_obj_t *btn = lv_list_add_btn(list, LV_SYMBOL_WIFI,"WLAN");
获取列表按钮文本:
lv_list_get_btn_text(list, list_btn);
3.3 实验小演示
创建文件列表、连接列表和离开列表。
lv_obj_t *list;
static void event_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t * obj = lv_event_get_target(e);
if(code == LV_EVENT_CLICKED)
{
LV_UNUSED(obj);
printf("Clicked: %s\n", lv_list_get_button_text(list, obj));
}
}
void my_gui(void)
{
list = lv_list_create(lv_scr_act()); /* 创建列表 */
lv_obj_t *btn;
/******************************文件列表*****************************/
lv_list_add_text(list, "File"); /* 创建列表文本 */
btn = lv_list_add_btn(list, LV_SYMBOL_FILE, "NEW"); /* 创建列表按钮:文件 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_DIRECTORY, "Open"); /* 创建列表按钮:打开 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_SAVE, "Save"); /* 创建列表按钮:保存 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_CLOSE, "Delete"); /* 创建列表按钮:删除 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_EDIT, "Edit"); /* 创建列表按钮:离开 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
/******************************连接列表*****************************/
lv_list_add_text(list, "Connectivity"); /* 创建列表文本 */
btn = lv_list_add_btn(list, LV_SYMBOL_BLUETOOTH, "Bluetooth"); /* 创建列表按钮:蓝牙 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_GPS, "Navigation"); /* 创建列表按钮:GPS */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_USB, "USB"); /* 创建列表按钮:USB */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_BATTERY_FULL, "Battery"); /* 创建列表按钮:电池 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
/******************************离开列表*****************************/
lv_list_add_text(list, "Exit"); /* 创建列表文本 */
btn = lv_list_add_btn(list, LV_SYMBOL_OK, "Apply"); /* 创建列表按钮:OK */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
btn = lv_list_add_btn(list, LV_SYMBOL_CLOSE, "Close"); /* 创建列表按钮:关闭 */
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); /* 添加点击事件 */
}
演示视频:LVGL列表
四、LVGL 下拉列表部件
下拉列表部件常用于多选一的场景,点击后可展现多个选项。
效果图:
4.1 下拉列表部件组成部分
按钮(BUTTON)
列表(LIST)
4.2 下拉列表部件基本API
创建下拉列表部件:
lv_obj_t *dd = lv_dropdown_create(parent);
设置选项内容:
lv_dropdown_set_options(dd, "a\nb\nc\nd"); /* 设置选项 */
lv_dropdown_set_options_static(dd, "a\nb\nc\nd"); /* 设置选项(静态) */
lv_dropdown_add_option(dd, "e", 4); /* 添加选项,索引从0开始 */
设置当前所选项:
lv_dropdown_set_selected(dd, 1); /* 索引从0开始 */
获取选项内容:
lv_dropdown_get_selected(dd); /* 获取索引 */
char buf[10];
lv_dropdown_get_selected_str(dd, buf, sizeof(buf)); /* 获取选项文本 */
设置方向和图标:
lv_dropdown_set_dir(dd, LV_DIR_RIGHT); /* 设置列表展开方向 */
lv_dropdown_set_symbol(dd, LV_SYMBOL_RIGHT); /* 设置图标 */
4.3 实验小演示
创建四个下拉列表,分别向上、下、左、右四个方向展开列表。
lv_obj_t *dd1, *dd2, *dd3, *dd4;
static void event_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e); /* 获取触发事件类型 */
lv_obj_t *obj = lv_event_get_target(e); /* 获取对象 */
if(code == LV_EVENT_VALUE_CHANGED)
{
char buf[10];
lv_dropdown_get_selected_str(obj, buf, sizeof(buf));
if(obj == dd1)
{
printf("The Up D-D List:%d %s\n", lv_dropdown_get_selected(obj), buf);
}else if(obj == dd2)
{
printf("The Down D-D List:%d %s\n", lv_dropdown_get_selected(obj), buf);
}else if(obj == dd3)
{
printf("The Left D-D List:%d %s\n", lv_dropdown_get_selected(obj), buf);
}else
{
printf("The Right D-D List:%d %s\n", lv_dropdown_get_selected(obj), buf);
}
}
}
void my_gui(void)
{
/***************************第一个下拉列表****************************/
dd1 = lv_dropdown_create(lv_scr_act()); /* 创建下拉列表 */
lv_dropdown_set_options(dd1, "Apple\nBanana\nOrange\nMelon"); /* 设置选项 */
lv_dropdown_set_selected(dd1, 0); /* 索引从0开始 */
lv_obj_align(dd1, LV_ALIGN_CENTER, 0, -100);
lv_obj_add_event_cb(dd1, event_cb, LV_EVENT_VALUE_CHANGED, NULL); /* 添加改变事件 */
/***************************第二个下拉列表****************************/
dd2 = lv_dropdown_create(lv_scr_act()); /* 创建下拉列表 */
lv_dropdown_set_options(dd2, "Apple\nBanana\nOrange\nMelon"); /* 设置选项 */
lv_dropdown_set_selected(dd2, 1); /* 索引从1开始 */
lv_obj_align(dd2, LV_ALIGN_CENTER, 0, 100);
lv_obj_add_event_cb(dd2, event_cb, LV_EVENT_VALUE_CHANGED, NULL); /* 添加改变事件 */
lv_dropdown_set_dir(dd2, LV_DIR_TOP); /* 设置列表展开方向 */
lv_dropdown_set_symbol(dd2, LV_SYMBOL_UP); /* 设置图标 */
/***************************第三个下拉列表****************************/
dd3 = lv_dropdown_create(lv_scr_act()); /* 创建下拉列表 */
lv_dropdown_set_options(dd3, "Apple\nBanana\nOrange\nMelon"); /* 设置选项 */
lv_dropdown_set_selected(dd3, 2); /* 索引从2开始 */
lv_obj_align(dd3, LV_ALIGN_CENTER, -200, 0);
lv_obj_add_event_cb(dd3, event_cb, LV_EVENT_VALUE_CHANGED, NULL); /* 添加改变事件 */
lv_dropdown_set_dir(dd3, LV_DIR_RIGHT); /* 设置列表展开方向 */
lv_dropdown_set_symbol(dd3, LV_SYMBOL_RIGHT); /* 设置图标 */
/***************************第四个下拉列表****************************/
dd4 = lv_dropdown_create(lv_scr_act()); /* 创建下拉列表 */
lv_dropdown_set_options(dd4, "Apple\nBanana\nOrange\nMelon"); /* 设置选项 */
lv_dropdown_set_selected(dd4, 3); /* 索引从3开始 */
lv_obj_align(dd4, LV_ALIGN_CENTER, 200, 0);
lv_obj_add_event_cb(dd4, event_cb, LV_EVENT_VALUE_CHANGED, NULL); /* 添加改变事件 */
lv_dropdown_set_dir(dd4, LV_DIR_LEFT); /* 设置列表展开方向 */
lv_dropdown_set_symbol(dd4, LV_SYMBOL_LEFT); /* 设置图标 */
}
演示图片:
演示视频:LVGL 向上、下、左、右展开列表
总结
在本篇中,我们可以学会环形加载器、LED、列表、下拉列表的基础应用,并配有小实验演示,再加上演示视频,可以更方便的去了解这些控件。小实验演示也在慢慢的加大难度,请勤多练手。
评论(0)
您还未登录,请登录后发表或查看评论