18. 加载器部件

一、加载器部件

  加载器部件常用于提示当前任务正在加载,它是由 主体背景LV_PART_MAIN)和 指示器LV_PART_INDICATOR)组成的,示意图如下所示:

加载器部件的组成部分

  用户需要 创建加载器部件,可调用 lv_spinner_create() 函数。

/**
 * @brief 创建加载器部件
 * 
 * @param parent 指向父部件的指针
 * @return lv_obj_t* 指向加载器部件的指针
 */
lv_obj_t * lv_spinner_create(lv_obj_t * parent);

  在创建加载器部件后,可以调用 lv_spinner_set_anim_params() 函数 设置加载器部件的动画参数

/**
 * @brief 设置环形加载器的动画时间和弧长角度
 * 
 * @param obj 指向加载器部件的指针
 * @param t 指示器旋转一圈的时间,单位为毫秒
 * @param angle 指示器的弧长角度
 */
void lv_spinner_set_anim_params(lv_obj_t * obj, uint32_t t, uint32_t angle);

  如果我们要 设置圆弧的颜色 可以通过以下函数设置。

/**
 * @brief 设置圆弧的颜色
 * 
 * @param obj 指向部件的指针
 * @param value 要设置的颜色值
 * @param selector 选择应用样式的特定部分
 */
void lv_obj_set_style_arc_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

  如果我们还要 设置圆弧的宽度,可以通过以下函数设置。

/**
 * @brief 设置圆弧的宽度
 * 
 * @param obj 指向部件的指针
 * @param value 要设置的宽度值
 * @param selector 选择应用样式的特定部分
 */
void lv_obj_set_style_arc_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

二、实验例程

#include "lvgl.h"
#include "lv_port_disp_template.h"
#include "lv_port_indev_template.h"

int main(void)
{
    HAL_Init();
    System_Clock_Init(8, 336, 2, 7);
    Delay_Init(168);

    SPI_Simulate_Init();
    // SRAM_Init();
    TIM_Base_Init(&g_tim6_handle, TIM6, 83, 999);
    __HAL_TIM_CLEAR_IT(&g_tim6_handle, TIM_IT_UPDATE);                          // 清除更新中断标志位
    HAL_TIM_Base_Start_IT(&g_tim6_handle);                                      // 使能更新中断,并启动计数器

    lv_init();
    lv_port_disp_init();
    lv_port_indev_init();

    // 测试代码
    lv_obj_t *spinner = lv_spinner_create(lv_scr_act());                        // 创建加载器部件
    lv_obj_set_size(spinner, 300, 300);                                         // 设置加载器部件的尺寸
    lv_obj_set_align(spinner, LV_ALIGN_CENTER);                                 // 设置加载器部件居中对齐

    lv_obj_set_style_arc_color(spinner, lv_color_hex(0x8A2BE2), LV_PART_MAIN);      // 设置主体圆弧的颜色
    lv_obj_set_style_arc_color(spinner, lv_color_hex(0xFF1493), LV_PART_INDICATOR); // 设置指示器圆弧的颜色

    lv_obj_set_style_arc_width(spinner, 30, LV_PART_MAIN);                      // 设置主体圆弧的宽度
    lv_obj_set_style_arc_width(spinner, 30,  LV_PART_INDICATOR);                // 设置指示器圆弧的宽度

    lv_spinner_set_anim_params(spinner, 3000, 90);                              // 设置环形加载器的动画时间和弧长角度

    while (1)
    {
        lv_timer_handler();
        Delay_ms(5);
    }
  
    return 0;
}
posted @ 2024-06-27 22:29  星光映梦  阅读(26)  评论(0编辑  收藏  举报