主要函数

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

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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐