用户工具

站点工具


icore4tlvgl_16
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-12-6 yang 初次建立

实验十六:lv_spinner缓冲标志

一、缓冲标志

缓冲标志是一段在圆环上旋转的弧,它的工作原理与弧形指示器类似,详情请参考弧形指示器章节。另外缓冲标志仅支持通用事件。 缓冲标志由以下两部分构成:

  • LV_SPINNER_PART_BG 背景圆环(主要部分)。
  • LV_SPINNER_PART_INDIC 旋转弧(虚拟部分)。

二、设置弧长

旋转弧的长度可以通过 lv_spinner_set_arc_length(spinner, deg) 来调节, deg 为旋转弧的角度,默认为60度弧长。

void lv_gui_run(void){
	lvgl2rtt_init("lcd");                                        /* 初始化lvgl2rtt */
 
	lv_obj_t * preload1 = lv_spinner_create(lv_scr_act(), NULL); /* 创建缓冲标志 */
	lv_obj_set_size(preload1, 40, 40);                           /* 设置尺寸 */
	lv_obj_align(preload1, NULL, LV_ALIGN_CENTER, -50, 0);       /* 设置位置 */
 
	lv_obj_t * preload2 = lv_spinner_create(lv_scr_act(), NULL); /* 创建缓冲标志 */
	lv_obj_set_size(preload2, 40, 40);                           /* 设置尺寸 */
	lv_obj_align(preload2, NULL, LV_ALIGN_CENTER, 50, 0);        /* 设置位置 */
	lv_spinner_set_arc_length(preload2, 180);                    /* 设置弧长为180度 */
}

三、旋转速度

旋转速度可以通过 lv_spinner_set_spin_time(preload, time_ms) 调节, time_ms 为转一圈所需的毫秒数,默认转一圈为1000ms。

void lv_gui_run(void){
	lvgl2rtt_init("lcd");                                         /* 初始化lvgl2rtt */
 
	lv_obj_t * preload1 = lv_spinner_create(lv_scr_act(), NULL);  /* 创建缓冲标志 */
	lv_obj_set_size(preload1, 40, 40);                            /* 设置尺寸 */
	lv_obj_align(preload1, NULL, LV_ALIGN_CENTER, -50, 0);        /* 设置位置 */
	lv_spinner_set_spin_time(preload1, 2000);                     /* 设置旋转速度 */
 
	lv_obj_t * preload2 = lv_spinner_create(lv_scr_act(), NULL);  /* 创建缓冲标志 */
	lv_obj_set_size(preload2, 40, 40);                            /* 设置尺寸 */
	lv_obj_align(preload2, NULL, LV_ALIGN_CENTER, 50, 0);         /* 设置位置 */
	lv_spinner_set_spin_time(preload2, 1000);                     /* 设置旋转速度 */
}

四、旋转类型

用户可以设置不同的旋转类型:

  • LV_SPINNER_TYPE_SPINNING_ARC 旋转弧线在顶部放慢速度。
  • LV_SPINNER_TYPE_FILLSPIN_ARC 旋转弧线,在顶部放慢速度,拉伸弧线。
  • LV_SPINNER_TYPE_CONSTANT_ARC 旋转弧以恒定速度旋转。

若要设置旋转类型请使用函数 lv_spinner_set_type(preload, LV_SPINNER_TYPE_…)

void lv_gui_run(void){
	lvgl2rtt_init("lcd");                                         /* 初始化lvgl2rtt */
 
	lv_obj_t * preload1 = lv_spinner_create(lv_scr_act(), NULL);  /* 创建缓冲标志 */
	lv_obj_set_size(preload1, 40, 40);                            /* 设置尺寸 */
	lv_obj_align(preload1, NULL, LV_ALIGN_CENTER, -80, 0);        /* 设置位置 */
	lv_spinner_set_type(preload1, LV_SPINNER_TYPE_SPINNING_ARC);  /* 设置旋转类型 */
 
	lv_obj_t * preload2 = lv_spinner_create(lv_scr_act(), NULL);  /* 创建缓冲标志 */
	lv_obj_set_size(preload2, 40, 40);                            /* 设置尺寸 */
	lv_obj_align(preload2, NULL, LV_ALIGN_CENTER, 0, 0);          /* 设置位置 */
	lv_spinner_set_type(preload2, LV_SPINNER_TYPE_FILLSPIN_ARC);  /* 设置旋转类型 */
 
	lv_obj_t * preload3 = lv_spinner_create(lv_scr_act(), NULL);  /* 创建缓冲标志 */
	lv_obj_set_size(preload3, 40, 40);                            /* 设置尺寸 */
	lv_obj_align(preload3, NULL, LV_ALIGN_CENTER, 80, 0);         /* 设置位置 */
	lv_spinner_set_type(preload3, LV_SPINNER_TYPE_CONSTANT_ARC);  /* 设置旋转类型 */
}

五、旋转方向

用户可以使用 lv_spinner_set_dir(preload, LV_SPINNER_DIR_FORWARD/BACKWARD) 来改变缓冲标志的旋转方向。

icore4tlvgl_16.txt · 最后更改: 2022/04/01 11:14 由 sean