【LVGL】ANIM(动画)时间线学习

时间线(timeline)

有时候需要同时播放较多动画,此时如果逐个播放的话,需要逐个为动画设计延时,不方便安排。此时,可以使用 LVGL 提供的时间线(timeline)统一安排各个动画。

时间线的创建非常简单。首先,创建一系列动画,但先不调用 lv_anim_start() 让动画开始。
其次,创建一个时间线并将各个动画添加到时间线的某一时刻处:

lv_anim_timeline_t* anim_timeline = lv_anim_timeline_create();
lv_anim_timeline_add(anim_timeline, 0, &anim_axis);
lv_anim_timeline_add(anim_timeline, 100, &anim_obj_01);
lv_anim_timeline_add(anim_timeline, 1100, &anim_obj_02);
lv_anim_timeline_add(anim_timeline, 2100, &anim_obj_03);
lv_anim_timeline_add(anim_timeline, 300, &anim_label_01);
lv_anim_timeline_add(anim_timeline, 1300, &anim_label_02);
lv_anim_timeline_add(anim_timeline, 2300, &anim_label_03);

使用时间线时,无需为动画设计延时,只需要关注动画会在什么时刻播放,延时便会自动计算。

这样就可以创建很复杂的组合动画效果了:

请添加图片描述
使用时间线可以方便管理所有动画,可以将时间线上包含的所有动画停播、倒放、跳转等。以下列出了一些常用的时间线控制函数:

![在这里插入图片描述](https://img-blog.csdnimg.cn/4511d7ebd7bb4d7295b68b54acb2db00.png
如果需要倒放,在设置了播放方向后还需要调用 lv_anim_timeline_start() 重新播放,并且会从当前位置倒放。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在LVGL中使用anim动画实现canvas里面文本闪烁的效果,需要使用一个LVGL的对象来绘制文本,并使用LVGL的anim动画来改变文本的透明度。以下是实现文本闪烁效果的代码示例: ```c // Create label object lv_obj_t * label = lv_label_create(lv_scr_act(), NULL); lv_label_set_text(label, "Hello World!"); lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); // Create anim object lv_anim_t anim; lv_anim_init(&anim); lv_anim_set_time(&anim, 1000); lv_anim_set_delay(&anim, 0); lv_anim_set_values(&anim, LV_OPA_COVER, LV_OPA_TRANSP); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_style_opa); lv_anim_set_var(&anim, label); // Start anim object lv_anim_start(&anim); ``` 在上面的代码中,我们使用 `lv_label_create()` 函数创建一个label对象,并使用 `lv_label_set_text()` 函数设置label的文本内容。然后使用 `lv_anim_t` 结构体创建一个anim对象。`lv_anim_set_time()` 函数设置动画的持续时间,`lv_anim_set_delay()` 函数设置动画的延迟时间,`lv_anim_set_values()` 函数设置动画的起始值和结束值,`lv_anim_set_exec_cb()` 函数设置动画的更新回调函数,`lv_anim_set_var()` 函数设置动画的目标对象。最后,使用 `lv_anim_start()` 函数启动动画。 在更新回调函数中,我们可以使用 `lv_obj_set_style_opa()` 函数改变label对象的透明度,从而实现文本闪烁效果。 我们可以根据需要调整文本的位置、颜色、字体等属性,来实现不同的文本闪烁效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值