LVGL学习笔记16 - 进度条Bar

31 篇文章 97 订阅

目录

 1. Parts

2. 模式

2.1 LV_BAR_MODE_SYMMETRICAL:对称模式

2.2 LV_BAR_MODE_RANGE:范围模式

3. 动画

4. 样式

4.1 方向

4.2 渐变色

4.3 增加边框

4.4 滚动条方向


进度条有一个背景和一个指示器组成,通过lv_bar_create创建对象。

static lv_obj_t *obj1 = lv_bar_create(lv_scr_act());
lv_obj_align(obj1, LV_ALIGN_CENTER, 0, 0);
lv_bar_set_value(obj1, 70, LV_ANIM_OFF);

进度条默认的范围是 0..100。

 1. Parts

进度条分2个Part:LV_PART_MAIN和LV_PART_INDICATOR。

lv_obj_set_style_bg_color(obj1, lv_color_hex(0xff0000), LV_PART_MAIN);
lv_obj_set_style_bg_opa(obj1, LV_OPA_100, LV_PART_MAIN);
lv_obj_set_style_bg_color(obj1, lv_color_hex(0x0000ff), LV_PART_INDICATOR);

红色对应MAIN,蓝色对应INDICATOR。

2. 模式

进度条可以是以下模式之一:LV_BAR_MODE_NORMAL、LV_BAR_MODE_SYMMETRICAL和LV_BAR_MODE_RANGE。

通过lv_bar_set_mode设置模式,默认是Normal。

2.1 LV_BAR_MODE_SYMMETRICAL:对称模式

可以指定负的最小范围,但是只能从零值到当前值绘制指示器。

lv_bar_set_mode(obj1, LV_BAR_MODE_SYMMETRICAL);
lv_bar_set_range(obj1, -100, 100);
lv_bar_set_value(obj1, 100, LV_ANIM_ON);

 指示器是从0画到100.

lv_bar_set_mode(obj1, LV_BAR_MODE_SYMMETRICAL);
lv_bar_set_range(obj1, -100, 100);
lv_bar_set_value(obj1, -100, LV_ANIM_ON);

 指示器是从0画到-100.

2.2 LV_BAR_MODE_RANGE:范围模式

和对称模式类似,可以指定负的最小范围,但是可以通过lv_bar_set_start_value设置起始值,然后可以从这个起始值绘制指示器。

lv_bar_set_mode(obj1, LV_BAR_MODE_RANGE);
lv_bar_set_range(obj1, -100, 100);
lv_bar_set_start_value(obj1, -100, LV_ANIM_ON);
lv_bar_set_value(obj1, 100, LV_ANIM_ON);

 

 注意,lv_bar_set_start_value必须要在lv_bar_set_range之后设置,否则会无效。

3. 动画

在设置值是可以打开动画效果。

可以通过lv_obj_set_style_anim_time修改动画时间

    obj1 = lv_bar_create(lv_scr_act());
    lv_obj_align(obj1, LV_ALIGN_CENTER, 0, 0);
    lv_bar_set_mode(obj1, LV_BAR_MODE_NORMAL);
    lv_obj_set_style_anim_time(obj1, 2000, LV_PART_MAIN);
    lv_bar_set_range(obj1, 0, 100);
    //lv_bar_set_start_value(obj1, -100, LV_ANIM_ON);
    //lv_bar_set_value(obj1, 0, LV_ANIM_ON);

    static lv_obj_t* btn1 = lv_btn_create(lv_scr_act());
    lv_obj_align(btn1, LV_ALIGN_CENTER, 0, -40);
    lv_obj_add_event_cb(btn1, barBtnEventHandle, LV_EVENT_CLICKED, NULL);

static void barBtnEventHandle(lv_event_t* e)
{
    lv_event_code_t eventCode = lv_event_get_code(e);
    if (eventCode == LV_EVENT_CLICKED)
    {
        lv_bar_set_value(obj1, 50, LV_ANIM_ON);
    }
}

 

4. 样式

4.1 方向

当进度条的宽度大于等于高度时,水平方向。

lv_obj_set_size(obj1, 200, 200);

 

当进度条的宽度小于高度时,垂直方向。

lv_obj_set_size(obj1, 20, 200);

4.2 渐变色

lv_obj_set_style_bg_color(obj1, lv_color_hex(0xff0000), LV_PART_INDICATOR);
lv_obj_set_style_bg_grad_color(obj1, lv_color_hex(0x0000ff), LV_PART_INDICATOR);
lv_obj_set_style_bg_grad_dir(obj1, LV_GRAD_DIR_HOR, LV_PART_INDICATOR);
lv_bar_set_value(obj1, 100, LV_ANIM_ON);

4.3 增加边框

lv_obj_set_style_border_color(obj1, lv_color_hex(0xff00000), LV_PART_MAIN);
lv_obj_set_style_border_width(obj1, 2, LV_PART_MAIN);
lv_obj_set_style_pad_all(obj1, 6, LV_PART_MAIN);
lv_obj_set_style_radius(obj1, 12, LV_PART_MAIN);

4.4 滚动条方向

滚动条默认是从左向右变化,可以通过lv_obj_set_style_base_dir设置不同的方向。

lv_obj_set_style_base_dir(obj1, LV_BASE_DIR_RTL, LV_PART_MAIN);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值