The following code is generated by GUI Guide v1.4.1:
static void screen_main_imgbtn_setting_event_handler(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code)
{
case LV_EVENT_RELEASED:
{
lv_disp_t * d = lv_obj_get_disp(lv_scr_act());
if (d->prev_scr == NULL && d->scr_to_load == NULL)
{
if (guider_ui.screen_1_del == true)
setup_scr_screen_1(&guider_ui);
lv_scr_load_anim(guider_ui.screen_1, LV_SCR_LOAD_ANIM_FADE_ON, 0, 0, true);
}
guider_ui.screen_main_del = true;
}
break;
default:
break;
}
}
'd->scr_to_load == NULL' away false when the parameter 'time' and 'delay' of function 'lv_scr_load_anim' are both 0, that cause load screen cannot succeed.
In v1.4.1, used 'if (d->prev_scr == NULL && d->scr_to_load == NULL)' replace 'if (!lv_obj_is_valid(guider_ui.screen_xxxx))', That's not quite right.
...
//This is a section of 'lv_scr_load_anim'
/*Shortcut for immediate load*/
if(time == 0 && delay == 0) {
scr_load_internal(new_scr);
return;//Return when the parameter 'time' and 'delay' of function 'lv_scr_load_anim' are both 0, that cause 'scr_to_load' is not NULL.
}
lv_anim_t a_new;
lv_anim_init(&a_new);
lv_anim_set_var(&a_new, new_scr);
lv_anim_set_start_cb(&a_new, scr_load_anim_start);
lv_anim_set_ready_cb(&a_new, scr_anim_ready);//But the 'scr_to_load' assignment NULL is here.
lv_anim_set_time(&a_new, time);
lv_anim_set_delay(&a_new, delay);
...