当前位置: 代码网 > it编程>网页制作>网页播放器 > Lvgl 8.0 动画功能配置与解释

Lvgl 8.0 动画功能配置与解释

2024年08月01日 网页播放器 我要评论
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); 改变对象的宽度

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com