Lvgl 8.0 动画功能配置与解释

lvgl版本 8.0

实现目标:使用动画演示按钮的宽度的动态改变

void demo(void)
{
    //配置样式    
    static lv_style_t style1;                
    lv_style_init(&style1);                  //初始化样式
    lv_style_set_radius(&style1,5);          //设置样式的圆角
    lv_style_set_bg_opa(&style1,LV_OPA_50);  //设置样式背景色透明度
    lv_style_set_text_color(&style1,lv_palette_main(LV_PALETTE_BLUE));//设置样式字体的颜色
    lv_style_set_bg_color(&style1,lv_palette_lighten(LV_PALETTE_YELLOW,1));//设置样式背景的颜色

    //配置按键
    lv_obj_t* btn1=lv_btn_create(lv_scr_act()); //创建按键
    lv_obj_set_pos(btn1,0,50);       //设置按键的起始坐标   
    lv_obj_set_size(btn1,5,30);      //设置按键尺寸
    lv_obj_add_style(btn1,&style1,0);//添加样式
    lv_obj_t* label=lv_label_create(btn1);//创建标签
    lv_label_set_text(label,"btn");  //设置标签文字
    lv_obj_center(label);            //标签字体在按键中居中显示


    //配置动画
    lv_anim_t a; 
    lv_anim_init(&a);
    lv_anim_set_var(&a, btn2);//设置动画对象
    lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)gauge_anim);//设置动画回调函数
    lv_anim_set_values(&a, 5, 100);//设置动画的初始值和结束值
    lv_anim_set_time(&a, 200);//设置动画持续时间
    lv_anim_set_repeat_count(&a, 0)//动画重复次数,不重复

    //使能动画
    lv_anim_start(&a);
}


static void gauge_anim(lv_obj_t * gauge, lv_coord_t value)
{
    lv_obj_set_size(gauge,value,30);
}



上面的代码可以实现动态改变按钮的宽度,接下来详细讲一下函数的功能

lv_anim_set_var(&a, btn2);

绑定动画对象,这里我们需要改变按键的宽度

 lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)gauge_anim);

绑定动画回调函数,动画改变在gauge_anim 函数执行

lv_anim_set_values(&a, 5, 100);

定义初始值和结束值,这里我们需要改变的是按键的宽度,所以我们设置按键的起始宽度为5,结束宽度为100

 lv_anim_set_time(&a1, 200);

动画持续时间,按键宽度从5到100这个过程的时间

lv_anim_set_repeat_count(&a, 0)

动画重复次数,这里指的的是按键宽度从5到100的过程次数,我们设置为0,不重复

 lv_anim_start(&a);

使能动画,这时就可以开启动画演示了,如果没有设置动画重复次数,那么重复次数默认为0,此时演示一次动画就结束。如果想再次开启动画,只需再次调用该函数

static void gauge_anim(lv_obj_t * gauge, lv_coord_t value)

{

    lv_obj_set_size(gauge,value,30);

}

lv_obj_t * gauge 动画对象

lv_coord_t value 动画改变值

lv_obj_set_size(gauge,value,30); 改变对象的宽度

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值