银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-12-1 | yang | 初次建立 |
实验十一:lv_bar条形指示器
对象上有一个背景和一个指示器,用户可以通过其显示一个任务的执行进度,也可以显示仓库剩余空间大小等等。指示器的宽度根据条的当前值设置。如果对象的宽度小于其高度,则可以创建垂直条形指示器。条形指示器不仅可以设置结束值,还可以设置条的起始值,从而改变指示器的起始位置。
条形指示器的主要部分被称为 LV_BAR_PART_BG ,它使用典型的背景样式属性。LV_BAR_PART_INDIC 是一个虚拟部件,也使用了所有典型的背景属性。默认情况下,指示器的最大尺寸与背景的尺寸相同,不过在 LV_BAR_PART_BG 中设置正填充值将使指示器变小(负值会使它变大)。
void lv_gui_run(void) { lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ lv_obj_t * bar1 = lv_bar_create(lv_scr_act(), NULL); /* 创建bar1 */ lv_obj_set_size(bar1, 20, 200); /* 设置bar1尺寸 */ lv_obj_align(bar1, NULL, LV_ALIGN_IN_LEFT_MID, 30, 0); /* 设置bar1位置 */ lv_bar_set_anim_time(bar1, 2000); /* 动画时长设为2s */ lv_bar_set_value(bar1, 100, LV_ANIM_ON); /* 设置目标值100 */ lv_obj_t * bar2 = lv_bar_create(lv_scr_act(), NULL); /* 创建bar2 */ lv_obj_set_size(bar2, 200, 20); /* 设置bar2尺寸 */ lv_obj_align(bar2, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -30); /* 设置bar21位置 */ lv_bar_set_anim_time(bar2, 2000); /* 动画时长设为2s */ lv_bar_set_value(bar2, 100, LV_ANIM_ON); /* 设置目标值100 */ }
条形指示器可以通过 lv_bar_set_value(bar, new_value, LV_ANIM_ON/OFF) 设置新值。该值要在最小值和最大值之间,最小值和最大值可以使用 lv_bar_set_range(bar, min, max) 进行修改。默认范围是 [1, 100]。
lv_bar_set_value 可以根据最后一个参数( LV_ANIM_ON/OFF )设置是否带有动画的新值。动画的时间可以通过 lv_bar_set_anim_time(bar, 1000) 调整。时间以毫秒为单位。 用户也可以使用 lv_bar_set_start_value(bar, new_value, LV_ANIM_ON/OFF) 设置条形指示器的起始值。
void lv_gui_run(void) { int i; lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ lv_obj_t * bar1 = lv_bar_create(lv_scr_act(), NULL); /* 创建bar1 */ lv_obj_set_size(bar1, 200, 20); /* 设置bar1尺寸 */ lv_obj_align(bar1, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -30); /* 设置bar1位置 */ lv_bar_set_anim_time(bar1, 2000); while(true){ for(i=-30;i<100;i++){ lv_bar_set_start_value(bar1, i, LV_ANIM_OFF); /* 设置bar1开始位置 */ lv_bar_set_value(bar1, i+30, LV_ANIM_OFF); /* 设置bar1结束位置 */ rt_thread_mdelay(10); } } }
如果启用 lv_bar_set_type(bar, LV_BAR_TYPE_SYMMETRICAL) ,则可以让条形指示器从零开始,从左到右均匀的绘制动画。
条形指示器支持通用事件。