用户工具

站点工具


icore4tlvgl_11
银杏科技有限公司旗下技术文档发布平台
技术支持电话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) ,则可以让条形指示器从零开始,从左到右均匀的绘制动画。

条形指示器支持通用事件。

icore4tlvgl_11.txt · 最后更改: 2022/04/01 11:13 由 sean