总结
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)