LVGL笔录----动画

最近在搞LVGL动画内容,发现网上能参考的资源太少了。现将自己学习到的内容做个笔录,仅供自己记录,若对你有帮助,那么最好不过,共勉!

首先,我是在CodeBlock上仿真

#define PI 3.14159265359

static void arc_path_cb(void* obj, int32_t v) {
    lv_obj_t* target = (lv_obj_t*)obj;
    // 圆心坐标和半径
    int cx = 50; // 圆心 X 坐标
    int cy = 40; // 圆心 Y 坐标
    int r = 120;  // 半径

    float angle = v * PI / 180.0;
    lv_coord_t x = cx + r * cos(angle);
    lv_coord_t y = cy + r * sin(angle);
    lv_obj_set_pos(target, x, y);
}

void create_arc_move_loop(lv_obj_t* parent) {
    lv_obj_t* obj = lv_obj_create(parent);
    lv_obj_set_size(obj, 50, 50);
    lv_obj_set_style_bg_color(obj, lv_color_hex(0xFF0000), 0);
    lv_obj_align(obj, LV_ALIGN_CENTER, 0, 0);

    lv_anim_t a;
    lv_anim_init(&a);
    lv_anim_set_var(&a, obj);
    lv_anim_set_exec_cb(&a, arc_path_cb);


    lv_anim_set_time(&a, 3000); // 动画时间:3000ms
    lv_anim_set_values(&a, 0, 200); 

    lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); // 无限循环
    lv_anim_start(&a);
}

void lv_example_arc_move_loop(void) {
    lv_obj_t* scr = lv_scr_act();
    lv_obj_t* btn = lv_obj_create(scr);
    lv_obj_set_size(btn,50,50);
    lv_obj_set_style_bg_color(btn, lv_color_hex(0x00ff00), 0);
    lv_obj_set_pos(btn, 300, 200);
    create_arc_move_loop(scr);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挨踢玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值