LVGL V8学习之进度条(bar控件)

好久没更新文章了,这一篇来研究下LVGL V8下进度条(bar控件)的使用,还是通过codeblock来模拟代码的运行,代码如下:

// bar对象动画回调函数
static void obj_bar_anim_exec_callback(void * bar, int32_t value)
{
    if (bar != NULL)
    {
        lv_bar_set_value((lv_obj_t *)bar, value, LV_ANIM_ON); // 设置进度条对象的值
    }
}


void lv_gui_bar_test()
{
    lv_obj_t * main_container = lv_obj_create(lv_scr_act());
    if (main_container == NULL)
	{
		printf("[%s:%d] create main_container failed\n", __FUNCTION__, __LINE__);
		return;
	}

    lv_obj_set_style_pad_all(main_container, 0, 0);
    lv_obj_set_style_border_width(main_container, 0, 0);//边框宽
    lv_obj_set_style_radius(main_container, 0, 0);//圆角大小
    lv_obj_set_size(main_container, LV_PCT(100), LV_PCT(100)); // 设置尺寸
    lv_obj_set_style_bg_opa(main_container, LV_OPA_100, 0); // 设置背景不透明度
    lv_obj_set_style_bg_color(main_container, lv_color_hex(0x355edc), 0); // 设置背景颜色
    lv_obj_center(main_container);

    lv_obj_t * obj_label = lv_label_create(main_container);
    if (obj_label != NULL)
    {
        lv_obj_set_style_text_color(obj_label, lv_color_white(), 0); // 设置文本颜色
        lv_obj_set_style_text_font(obj_label,(const lv_font_t *)(&lv_font_montserrat_20), 0); // 设置文本字体大小
        lv_label_set_text(obj_label, "Software is upgrading, Please wait!"); // 设置文本内容
        lv_obj_align(obj_label, LV_ALIGN_CENTER, 0, -30);
    }

    static lv_style_t style_bg;
    lv_style_init(&style_bg);
    lv_style_reset(&style_bg);
    lv_style_set_border_color(&style_bg, lv_color_hex(0xFFFFFF)); // 设置边框颜色
    lv_style_set_border_width(&style_bg, 2); // 设置边框宽度
    lv_style_set_pad_all(&style_bg, 6);
    lv_style_set_radius(&style_bg, 6); // 设置圆角弧度

    static lv_style_t style_indic;
    lv_style_reset(&style_indic);
    lv_style_init(&style_indic);
    lv_style_set_bg_opa(&style_indic, LV_OPA_COVER); // 设置背景不透明度
    lv_style_set_bg_color(&style_indic, lv_color_hex(0xFFFFFF));
    lv_style_set_radius(&style_indic, 3);

    lv_obj_t * obj_bar = lv_bar_create(main_container);
    if (obj_bar != NULL)
    {
        lv_obj_remove_style_all(obj_bar);  // 清除所有样式
        lv_obj_add_style(obj_bar, &style_bg, 0);
        lv_obj_add_style(obj_bar, &style_indic, LV_PART_INDICATOR);
        lv_obj_set_size(obj_bar, 400, 20);
        lv_obj_align(obj_bar, LV_ALIGN_CENTER, 0, 30);

        lv_anim_t anim;
        lv_anim_init(&anim); // 初始化动画
        lv_anim_set_exec_cb(&anim, obj_bar_anim_exec_callback); // 添加回调函数
        lv_anim_set_time(&anim, 5000); // 设置动画时长
        lv_anim_set_var(&anim, obj_bar); // 动画绑定对象
        lv_anim_set_values(&anim, 0, 100); // 设置开始值和结束值
        lv_anim_set_repeat_count(&anim, LV_ANIM_REPEAT_INFINITE); // 重复次数,默认值为1 LV_ANIM_REPEAT_INFINIT用于无限重复
        lv_anim_start(&anim); // 应用动画效果
    }
}

运行效果:

LVGL V8学习之进度条(bar控件)_第1张图片

你可能感兴趣的:(LVGL,LVGL,bar)