lvgl 屏幕切换动画测试

#include "lvgl.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#if LV_VERSION_CHECK(8,0,0)
lv_obj_t * create_page_1(const char *text);
lv_obj_t *o1,*o2;

static void lv_event_cb_1(lv_event_t * e);
#define LV_COLOR_BLUE   lv_color_make(0x00,0xBF,0xFF)
void switch_test()
{
	o1 = create_page_1("Page 1");
	lv_obj_add_event_cb(o1,lv_event_cb_1,LV_EVENT_CLICKED,NULL);
}
lv_obj_t * create_page_1(const char *text)
{
    lv_obj_t* root_obj = lv_obj_create(lv_scr_act());
	lv_obj_clear_flag(root_obj, LV_OBJ_FLAG_SCROLLABLE);
    lv_obj_set_size(root_obj, LV_HOR_RES, LV_VER_RES);
	lv_obj_set_pos(root_obj,0,0);
    lv_obj_t *btn1 = lv_btn_create(root_obj);
    lv_obj_t *label = lv_label_create(btn1);
	lv_label_set_text(label,text);
	lv_obj_align(btn1,LV_ALIGN_CENTER,0,0);


	{
        static int i=0;
        if(i) lv_obj_set_style_bg_color(root_obj, lv_color_white(), LV_PART_MAIN);
		else lv_obj_set_style_bg_color(root_obj, LV_COLOR_BLUE, LV_PART_MAIN);
		i =!i;
	}
	return root_obj ;
}
static void set_x_anim(void * obj, int32_t v);
static void lv_anim_ready_cb_1(struct _lv_anim_t *a);

static void lv_event_cb_1(lv_event_t * e)
{
	char buf[100];
	memset(buf,0,sizeof(buf));
	lv_obj_remove_event_cb( lv_event_get_target(e),lv_event_cb_1) ;
	time_t  t= 	time(NULL);
	sprintf(buf,"Page %lu",t);
	lv_anim_t a;
	lv_anim_init(&a);
    lv_anim_set_time(&a, 2000);
    lv_anim_set_path_cb(&a, lv_anim_path_linear);
	//lv_anim_set_path_cb(&a, lv_anim_path_step);

	a.user_data = o1;
	lv_anim_set_var(&a, create_page_1(buf));
    lv_anim_set_ready_cb(&a, lv_anim_ready_cb_1);
	lv_anim_set_values(&a, LV_HOR_RES, 0);
    lv_anim_set_exec_cb(&a, set_x_anim);

	lv_anim_start(&a);
}
static void set_x_anim(void * obj, int32_t v)
{
    lv_obj_set_x(obj, v);
}
static void lv_anim_ready_cb_1(struct _lv_anim_t *a)
{
	lv_obj_del(a->user_data);
	o1 = a->var;
    lv_obj_add_event_cb(o1,lv_event_cb_1,LV_EVENT_CLICKED,NULL);
}
#endif

你可能感兴趣的:(其它,动画,c语言)