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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值