| **银杏科技有限公司旗下技术文档发布平台** |||| |技术支持电话|**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度弧长。 {{ :icore4t:icore4t_rtt_lvgl_16_1.gif?direct |}} 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。 {{ :icore4t:icore4t_rtt_lvgl_16_2.gif?direct |}} 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_...)** 。 {{ :icore4t:icore4t_rtt_lvgl_16_3.gif?direct |}} 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)** 来改变缓冲标志的旋转方向。