lv_example_anim_1.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "../lv_examples.h"
  2. #if LV_BUILD_EXAMPLES && LV_USE_SWITCH
  3. static void anim_x_cb(void * var, int32_t v)
  4. {
  5. lv_obj_set_x(var, v);
  6. }
  7. static void sw_event_cb(lv_event_t * e)
  8. {
  9. lv_obj_t * sw = lv_event_get_target(e);
  10. lv_obj_t * label = lv_event_get_user_data(e);
  11. if(lv_obj_has_state(sw, LV_STATE_CHECKED)) {
  12. lv_anim_t a;
  13. lv_anim_init(&a);
  14. lv_anim_set_var(&a, label);
  15. lv_anim_set_values(&a, lv_obj_get_x(label), 100);
  16. lv_anim_set_time(&a, 500);
  17. lv_anim_set_exec_cb(&a, anim_x_cb);
  18. lv_anim_set_path_cb(&a, lv_anim_path_overshoot);
  19. lv_anim_start(&a);
  20. }
  21. else {
  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), -lv_obj_get_width(label));
  26. lv_anim_set_time(&a, 500);
  27. lv_anim_set_exec_cb(&a, anim_x_cb);
  28. lv_anim_set_path_cb(&a, lv_anim_path_ease_in);
  29. lv_anim_start(&a);
  30. }
  31. }
  32. /**
  33. * Start animation on an event
  34. */
  35. void lv_example_anim_1(void)
  36. {
  37. lv_obj_t * label = lv_label_create(lv_scr_act());
  38. lv_label_set_text(label, "Hello animations!");
  39. lv_obj_set_pos(label, 100, 10);
  40. lv_obj_t * sw = lv_switch_create(lv_scr_act());
  41. lv_obj_center(sw);
  42. lv_obj_add_state(sw, LV_STATE_CHECKED);
  43. lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, label);
  44. }
  45. #endif