zl程序教程

您现在的位置是:首页 >  工具

当前栏目

LVGL V8之Gap动画

动画 V8 LVGL Gap
2023-09-14 09:11:17 时间

row动画回调函数

static void row_gap_anim(void* obj, int32_t v)
{
    lv_obj_set_style_pad_row(obj, v, 0);
}

column动画回调函数

static void column_gap_anim(void* obj, int32_t v)
{
    lv_obj_set_style_pad_column(obj, v, 0);
}

创建3x3按键行列间隔动画效果

static void lv_example_flex_5(void)
{
    lv_obj_t* cont = lv_obj_create(lv_scr_act()); //当前活动界面创建obj对象
    lv_obj_set_size(cont, 300, 220); // 设置大小
    lv_obj_center(cont); // 居中显示
    lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP); //LV_FLEX_FLOW_ROW_WRAP方式排列
    uint32_t i;
    for (i = 0; i < 9; i++) {
        lv_obj_t* obj = lv_obj_create(cont); //在cont对象上创建obj对象
        lv_obj_set_size(obj, 70, LV_SIZE_CONTENT); // 设置大小
        lv_obj_t* label = lv_label_create(obj); //在obj对象上创建label
        lv_label_set_text_fmt(label, "%d", i); //设置显示内容
        lv_obj_center(label); // 居中显示
    }
    lv_anim_t a;
    lv_anim_init(&a); //初时化动画变量
    lv_anim_set_var(&a, cont); // 设置动画操作对象
    lv_anim_set_values(&a, 0, 10); // 设置动画start,end值
    lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);// 设置重复次数为无限重复
    lv_anim_set_exec_cb(&a, row_gap_anim); // 注册动画执行回调函数
    lv_anim_set_time(&a, 500); //  设置动画持续时间
    lv_anim_set_playback_time(&a, 500); // 设置动画回播时间
    lv_anim_start(&a);  // 启动动画
    lv_anim_set_exec_cb(&a, column_gap_anim); // 注册动画执行回调函数
    lv_anim_set_time(&a, 3000);  // 设置动画持续时间
    lv_anim_set_playback_time(&a, 3000); // 设置动画回播时间
    lv_anim_start(&a);   // 启动动画
}

效果图

在这里插入图片描述