LVGL学习——动画重复播放,回放

主要函数

 /** 当前进方向准备就绪时,制作要播放的动画

 * Make the animation to play back to when the forward direction is ready
 * @param a         pointer to an initialized `lv_anim_t` variable
 * @param delay     delay in milliseconds before starting the playback animation.重放动画

static inline void lv_anim_set_playback_delay(lv_anim_t * a, uint32_t delay)
 */

 /** 当前进方向准备就绪时,制作要播放的动画

 * Make the animation to play back to when the forward direction is ready
 * @param a         pointer to an initialized `lv_anim_t` variable
 * @param delay     delay in milliseconds before starting the playback animation.重放动画

static inline void lv_anim_set_playback_delay(lv_anim_t * a, uint32_t delay)
 */

/**
 * Make the animation repeat itself.
 * @param a         pointer to an initialized `lv_anim_t` variable
 * @param cnt       repeat count or `LV_ANIM_REPEAT_INFINITE` for infinite repetition. 0: to disable repetition.

static inline void lv_anim_set_repeat_count(lv_anim_t * a, uint16_t cnt)
 */
 

static void anim_x_cb(void * var, int32_t v)
{
    lv_obj_set_x(var, v);
}
static void anim_size_cb(void * var, int32_t v)
{
    lv_obj_set_size(var, v, v);
}
/**
* Create a playback animation
*/
void lv_example_anim_2(void)
{
//    创建一个红色小球
//    位于左侧中部(10,0)
/**
 * Change the alignment of an object and set new coordinates.
 * Equivalent to:
 * lv_obj_set_align(obj, align);
 * lv_obj_set_pos(obj, x_ofs, y_ofs);
 * @param obj       pointer to an object to align
 * @param align     type of alignment (see 'lv_align_t' enum) `LV_ALIGN_OUT_...` can't be used.
 * @param x_ofs     x coordinate offset after alignment
 * @param y_ofs     y coordinate offset after alignment

void lv_obj_align(struct _lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs);
 */
    lv_obj_t * obj = lv_obj_create(lv_scr_act());
    lv_obj_set_style_bg_color(obj, lv_palette_main(LV_PALETTE_RED), 0);
    lv_obj_set_style_radius(obj, LV_RADIUS_CIRCLE, 0);
    lv_obj_align(obj, LV_ALIGN_LEFT_MID, 10, 0);

    lv_anim_t a;
    lv_anim_init(&a);
    lv_anim_set_var(&a, obj);
    lv_anim_set_values(&a, 10, 50);//size的变化值
 /** 当前进方向准备就绪时,制作要播放的动画

 * Make the animation to play back to when the forward direction is ready
 * @param a         pointer to an initialized `lv_anim_t` variable
 * @param delay     delay in milliseconds before starting the playback animation.重放动画

static inline void lv_anim_set_playback_delay(lv_anim_t * a, uint32_t delay)
 */
    lv_anim_set_time(&a, 1000);
    lv_anim_set_playback_delay(&a, 1000);
    lv_anim_set_playback_time(&a, 300);//回放动画用的时间
    lv_anim_set_repeat_delay(&a, 500);//延迟回放
/**
 * Make the animation repeat itself.
 * @param a         pointer to an initialized `lv_anim_t` variable
 * @param cnt       repeat count or `LV_ANIM_REPEAT_INFINITE` for infinite repetition. 0: to disable repetition.

static inline void lv_anim_set_repeat_count(lv_anim_t * a, uint16_t cnt)
 */
    lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);//一直重复动画
    lv_anim_set_path_cb(&a, lv_anim_path_ease_in_out);//变化速度

/**
 * Calculate the current value of an animation applying an "S" characteristic (cosine)
 * @param a     pointer to an animation
 * @return      the current value to set

int32_t lv_anim_path_ease_in_out(const lv_anim_t * a);
 */
    lv_anim_set_exec_cb(&a, anim_size_cb);//对象尺寸变化
    lv_anim_start(&a);
    lv_anim_set_exec_cb(&a, anim_x_cb);//位置变化
    lv_anim_set_values(&a, 10, 240);
    lv_anim_start(&a);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVGL是一个开源的图形库,它提供了许多不同的功能,包括支持PNG图片和视频播放。下面是一个使用LVGL播放PNG图片的示例: ```c #include "lvgl/lvgl.h" #include "lv_png.h" void lv_png_play(const char * path, uint32_t fps) { lv_obj_t * png = lv_img_create(lv_scr_act(), NULL); lv_img_set_src(png, path); lv_img_set_auto_size(png, true); lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, png); lv_anim_set_time(&a, 1000 / fps); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); lv_anim_set_playback_time(&a, 1000); lv_anim_set_repeat_delay(&a, 0); lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_obj_set_style_bg_color); lv_anim_set_values(&a, 0, LV_COLOR_WHITE, lv_color_make(0x00, 0xff, 0x00)); lv_anim_start(&a); } void lv_png_stop(void) { lv_anim_del(lv_scr_act(), NULL); } int main(void) { lv_init(); lv_png_play("path/to/png/file.png", 30); while (1) { lv_task_handler(); } return 0; } ``` 在这个示例中,我们使用`lv_img_create()`函数创建了一个PNG图片对象,并使用`lv_img_set_src()`函数将PNG图片文件的路径传递给该对象。我们还使用`lv_anim_init()`函数初始化了一个动画,并使用`lv_anim_set_time()`函数设置了动画的时间。`lv_anim_set_playback_time()`函数设置了动画回放时间,`lv_anim_set_repeat_delay()`函数设置了动画重复延迟时间。`lv_anim_set_exec_cb()`函数设置了动画执行时的回调函数,我们在这里使用了`lv_obj_set_style_bg_color()`函数来改变PNG图片对象的背景色。最后,我们使用`lv_anim_start()`函数启动了动画。 使用LVGL播放视频的示例代码如下: ```c #include "lvgl/lvgl.h" #include "lv_png.h" #include "lv_playback.h" void lv_video_play(const char * path) { lv_obj_t * video = lv_playback_create(lv_scr_act(), NULL); lv_playback_set_src(video, path); lv_playback_set_control(video, true); lv_obj_set_size(video, LV_HOR_RES, LV_VER_RES); } void lv_video_stop(void) { lv_playback_stop(lv_scr_act(), NULL); } int main(void) { lv_init(); lv_video_play("path/to/video/file.mp4"); while (1) { lv_task_handler(); } return 0; } ``` 在这个示例中,我们使用`lv_playback_create()`函数创建了一个视频对象,并使用`lv_playback_set_src()`函数将视频文件的路径传递给该对象。我们还使用`lv_playback_set_control()`函数启用了视频控制器,并使用`lv_obj_set_size()`函数设置了视频对象的大小。最后,我们使用`lv_playback_stop()`函数停止了视频播放。 请注意,这些示例代码中的路径仅供参考,您需要将其替换为您自己的PNG图片和视频文件的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值