LVGL动画

总结

Lvgl的动画自带几种效果非常好用,下面简单介绍一下

动画基本使用

//封装一下对象添加动画流程
/*
 *obj: 控件对象
 *exec_cb:动画设置函数,例如:控件的位置等
 *time:动画时长
 *start:动画开始值
 *end:动画结束值
 *path_cb:动画效果
 */
void lv_obj_add_anim(lv_obj_t* obj, lv_anim_exec_xcb_t exec_cb, uint16_t time, lv_coord_t start, lv_coord_t end, lv_anim_path_cb_t path_cb)
{
    lv_anim_t a;

    lv_anim_init(&a);
    lv_anim_set_var(&a, obj); //动画对象

    lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)exec_cb); //动画函数
    lv_anim_set_time(&a, time);

    a.start = start;		  //起始值
    a.end = end; //结束值
    a.path.cb = path_cb;	  //动画计算方法
    a.playback_time = 0;				  //回放时间设为0不执行动画回放

    lv_anim_start(&a); //开启动画
}

动画基本效果

lv_anim_path_cb_t 有以下几种已自带的效果:

//线性执行效果,即匀速变化
lv_anim_value_t lv_anim_path_linear(const lv_anim_path_t * path, const lv_anim_t * a)

//渐进效果
lv_anim_value_t lv_anim_path_ease_in(const lv_anim_path_t * path, const lv_anim_t * a)

//渐出效果
lv_anim_value_t lv_anim_path_ease_out(const lv_anim_path_t * path, const lv_anim_t * a)

lv_anim_value_t lv_anim_path_ease_in_out(const lv_anim_path_t * path, const lv_anim_t * a)
//到达终点后有回退效果
lv_anim_value_t lv_anim_path_overshoot(const lv_anim_path_t * path, const lv_anim_t * a)

你可能感兴趣的:(嵌入式)