1 #include "../lv_examples.h"
2 #if LV_BUILD_EXAMPLES && LV_USE_SWITCH
3
anim_x_cb(void * var,int32_t v)4 static void anim_x_cb(void * var, int32_t v)
5 {
6 lv_obj_set_x(var, v);
7 }
8
timer_cb(lv_timer_t * timer)9 static void timer_cb(lv_timer_t * timer)
10 {
11
12 lv_anim_t * anim = lv_timer_get_user_data(timer);
13 lv_anim_pause_for(anim, 1000);
14 lv_timer_delete(timer);
15 }
sw_event_cb(lv_event_t * e)16 static void sw_event_cb(lv_event_t * e)
17 {
18 lv_obj_t * sw = lv_event_get_target(e);
19 lv_obj_t * label = lv_event_get_user_data(e);
20
21 if(lv_obj_has_state(sw, LV_STATE_CHECKED)) {
22 lv_anim_t a;
23 lv_anim_init(&a);
24 lv_anim_set_var(&a, label);
25 lv_anim_set_values(&a, lv_obj_get_x(label), 100);
26 lv_anim_set_duration(&a, 500);
27 lv_anim_set_exec_cb(&a, anim_x_cb);
28 lv_anim_set_path_cb(&a, lv_anim_path_overshoot);
29 lv_timer_create(timer_cb, 200, lv_anim_start(&a));
30 }
31 else {
32 lv_anim_t a;
33 lv_anim_init(&a);
34 lv_anim_set_var(&a, label);
35 lv_anim_set_values(&a, lv_obj_get_x(label), -lv_obj_get_width(label));
36 lv_anim_set_duration(&a, 500);
37 lv_anim_set_exec_cb(&a, anim_x_cb);
38 lv_anim_set_path_cb(&a, lv_anim_path_ease_in);
39 lv_timer_create(timer_cb, 200, lv_anim_start(&a));
40
41 }
42
43 }
44
45 /**
46 * Start animation on an event
47 */
lv_example_anim_4(void)48 void lv_example_anim_4(void)
49 {
50 lv_obj_t * label = lv_label_create(lv_screen_active());
51 lv_label_set_text(label, "Hello animations!");
52 lv_obj_set_pos(label, 100, 10);
53
54 lv_obj_t * sw = lv_switch_create(lv_screen_active());
55 lv_obj_center(sw);
56 lv_obj_add_state(sw, LV_STATE_CHECKED);
57 lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, label);
58 }
59
60 #endif
61