概念
我们可以设定对象的开始状态和结束状态,随后可以通过动画来实现中间的过渡效果。
动画实际上是通过定期调用带有 value 参数的 animator 函数来实现的。函数原型如下:
func(var, value)
该原型与 LVGL 的大多数设置功能兼容。例如 lvgl.obj_set_x(obj,value) 或 lvgl.obj_set_width(obj,value)
创建动画
要创建动画,必须初始化 lvgl.anim_t,并使用 lvgl.anim_set_…() 函数进行配置。
anim = lvgl.anim_t()
lvgl.anim_set_values(anim, -lvgl.obj_get_height(btn), lvgl.obj_get_y(btn), lvgl.ANIM_PATH_OVERSHOOT)
lvgl.anim_set_time(anim, 300, -2000)
lvgl.anim_set_repeat(anim, 500)
lvgl.anim_set_playback(anim, 500)
lvgl.anim_set_exec_cb(anim, btn, set_y)
lvgl.anim_create(anim)
设置路径
可以设置 动画的路径。在最简单的情况下,它是线性的,这意味着起始值和结束值之间的数值线性变化。路径主要是根据动画的当前状态计算要设置的下一个值的功能。当前,有以下内置路径功能:
lvgl.anim_path_linear – 线性动画
lvgl.anim_path_step – 一步到位
lvgl.anim_path_ease_in – 渐进效果
lvgl.anim_path_ease_out – 渐退效果
lvgl.anim_path_ease_in_out – 渐进和渐退效果
lvgl.anim_path_overshoot – 超出最终值
lvgl.anim_path_bounce – 从最终值反弹一点(就像撞墙一样)
速度与时间
默认情况下,可以设置动画时间。但是,在某些情况下,动画速度更加实用。
lvgl.anim_speed_to_time(speed, start, end) 函数以毫秒为单位计算从给定速度的起始值到结束值所需的时间。速度以单位/秒为单位进行解释。例如, lvgl.anim_speed_to_time(20,0,100) 将给出 5000 毫秒。例如,在 lvgl.obj_set_x 单位为像素的情况下,因此 20 表示20 px/sec 的速度。
删除动画
可以通过提供 animation 指针及其函数来删除动画。
lvgl.anim_del(var,func)