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); 改变对象的宽度
发表评论