LVGL加载器,led和列表学习(基于正点原子)
加载器部件(lv_spinner)
加载器部件常用于提示当前任务正在加载。
加载器部件组成部分:
主体(LV_PART_MAIN)
指示器(LV_PART_INDICATOR)
手柄(LV_PART_KNOB)
知识点1:创建加载器部件
lv_obj_t *spinner = lv_spinner_create( parent, spin_time, arc_length );
知识点2:设置圆弧颜色
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 ); /* 设置指示器圆弧颜色 */
知识点3:设置圆弧宽度
lv_obj_set_style_arc_width( spinner, 30, LV_PART_MAIN ); /* 设置主体圆弧宽度 */ lv_obj_set_style_arc_width( spinner, 30, LV_PART_INDICATOR ); /* 设置指示器圆弧宽度 */
LED部件(lv_led)
LED部件常用于指示控制对象的状态。
主体(LV_PART_MAIN)
注意,不同版本的lvgl的led的显示不太一致。
知识点1:创建LED部件
lv_obj_t *led = lv_led_create( parent );
知识点2:设置LED颜色、亮度
lv_led_set_color( led, lv_color_hex(0xff0000) ); /* 设置LED颜色 */
lv_led_set_brightness( led, 0 ); /* 设置LED亮度,范围0~255*/
知识点3:设置LED状态
lv_led_on( led ); /* 打开LED(设置亮度为255)*/
lv_led_off( led ); /* 关闭LED */ lv_led_toggle( led ); /* 翻转LED状态 */
列表部件(lv_list)
列表部件常用于多选一的场景,默认会展现多个选项。
列表部件组成部分:
主体(LV_PART_MAIN)
滚动条(LV_PART_SCROLLBAR)
知识点1:创建列表部件
lv_obj_t *list = lv_list_create( parent );
知识点2:添加列表文本
lv_list_add_text( list, “Settings" );
知识点3:添加列表按钮
lv_obj_t *btn= lv_list_add_btn( list, LV_SYMBOL_WIFI, “WLAN");
知识点4:获取列表按钮文本
lv_list_get_btn_text( list, list_btn );
这里说一下例程两个关键函数:
lv_obj_update_layout(obj_left); /* 手动更新物体(obj_left)的参数 */
这个函数用于更新obj的参数,以便后面获取: lv_obj_set_height(obj_right,lv_obj_get_height(obj_left)); /* 设置高度 */
这里就用到了obj_left,注意的是lvgl的参数不是实时更新的,如果要用到获取widgets参数,就要先调用更新物体参数,不然获取到0,就会发生错误。
static void list_btn_event_cb(lv_event_t *e)
{
lv_obj_t *list_btn = lv_event_get_target(e); /* 获取触发源 */
lv_label_set_text(list_label, lv_list_get_btn_text(list, list_btn)); /* 获取按钮文本并显示 */
lv_obj_add_state(list_btn, LV_STATE_FOCUS_KEY); /* 添加状态(聚焦) */
}
这个回调函数,lv_event_get_target(e),获取触发源 ,另一个lv_event_get_code(e)是获取触发类型:长按,点击等等。第二个函数是获取列表的按钮的文本并且显示在右边的列表框内。第三个函数是添加聚焦状态,就是你选中这个选项后,会有选中的特效,比如选中那一栏底色设置为蓝色。