feat(anim): add a pause method (#7583)
This commit is contained in:
@@ -15,6 +15,11 @@ Cubic Bezier animation
|
||||
.. lv_example:: anim/lv_example_anim_3
|
||||
:language: c
|
||||
|
||||
Pause animation
|
||||
----------------------
|
||||
.. lv_example:: anim/lv_example_anim_4
|
||||
:language: c
|
||||
|
||||
Animation timeline
|
||||
------------------
|
||||
.. lv_example:: anim/lv_example_anim_timeline_1
|
||||
|
||||
@@ -28,6 +28,7 @@ extern "C" {
|
||||
void lv_example_anim_1(void);
|
||||
void lv_example_anim_2(void);
|
||||
void lv_example_anim_3(void);
|
||||
void lv_example_anim_4(void);
|
||||
void lv_example_anim_timeline_1(void);
|
||||
|
||||
/**********************
|
||||
|
||||
60
examples/anim/lv_example_anim_4.c
Normal file
60
examples/anim/lv_example_anim_4.c
Normal file
@@ -0,0 +1,60 @@
|
||||
#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(var, v);
|
||||
}
|
||||
|
||||
static void timer_cb(lv_timer_t * timer)
|
||||
{
|
||||
|
||||
lv_anim_t * anim = lv_timer_get_user_data(timer);
|
||||
lv_anim_pause_for(anim, 1000);
|
||||
lv_timer_delete(timer);
|
||||
}
|
||||
static void sw_event_cb(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t * sw = lv_event_get_target(e);
|
||||
lv_obj_t * label = lv_event_get_user_data(e);
|
||||
|
||||
if(lv_obj_has_state(sw, LV_STATE_CHECKED)) {
|
||||
lv_anim_t a;
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_var(&a, label);
|
||||
lv_anim_set_values(&a, lv_obj_get_x(label), 100);
|
||||
lv_anim_set_duration(&a, 500);
|
||||
lv_anim_set_exec_cb(&a, anim_x_cb);
|
||||
lv_anim_set_path_cb(&a, lv_anim_path_overshoot);
|
||||
lv_timer_create(timer_cb, 200, lv_anim_start(&a));
|
||||
}
|
||||
else {
|
||||
lv_anim_t a;
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_var(&a, label);
|
||||
lv_anim_set_values(&a, lv_obj_get_x(label), -lv_obj_get_width(label));
|
||||
lv_anim_set_duration(&a, 500);
|
||||
lv_anim_set_exec_cb(&a, anim_x_cb);
|
||||
lv_anim_set_path_cb(&a, lv_anim_path_ease_in);
|
||||
lv_timer_create(timer_cb, 200, lv_anim_start(&a));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Start animation on an event
|
||||
*/
|
||||
void lv_example_anim_4(void)
|
||||
{
|
||||
lv_obj_t * label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(label, "Hello animations!");
|
||||
lv_obj_set_pos(label, 100, 10);
|
||||
|
||||
lv_obj_t * sw = lv_switch_create(lv_screen_active());
|
||||
lv_obj_center(sw);
|
||||
lv_obj_add_state(sw, LV_STATE_CHECKED);
|
||||
lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, label);
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user