Files
lvgl/examples/anim/lv_example_anim_2.c
Mutahhar Mustafa Khan d76a346376 docs(examples): introduce summary and description to examples (#9968)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2026-04-20 14:05:57 +02:00

54 lines
1.6 KiB
C

#include "../lv_examples.h"
#if LV_BUILD_EXAMPLES && LV_USE_SWITCH
static void anim_x_cb(void * var, int32_t v)
{
lv_obj_set_x((lv_obj_t *) var, v);
}
static void anim_size_cb(void * var, int32_t v)
{
lv_obj_set_size((lv_obj_t *) var, v, v);
}
/**
* @title Infinite playback animation
* @brief Grow a red circle while sliding it right, then reverse and repeat.
*
* A red circular object sits on the left edge of the active screen. One
* `lv_anim_t` drives `lv_obj_set_size` from 10 to 50 over 1000 ms; the same
* configured animation is then reused with `lv_obj_set_x` running from 10
* to 240. Both run with `lv_anim_path_ease_in_out`, a 300 ms reverse stage
* after a 100 ms reverse delay, a 500 ms gap between cycles, and
* `LV_ANIM_REPEAT_INFINITE`.
*/
void lv_example_anim_2(void)
{
lv_obj_t * obj = lv_obj_create(lv_screen_active());
lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE);
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);
lv_anim_set_duration(&a, 1000);
lv_anim_set_reverse_delay(&a, 100);
lv_anim_set_reverse_duration(&a, 300);
lv_anim_set_repeat_delay(&a, 500);
lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
lv_anim_set_path_cb(&a, lv_anim_path_ease_in_out);
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);
}
#endif