From 0e4dcbb71eb94717a125864d67ee2ea0bd752f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=90=83=E6=B2=B9=E7=82=B8=E9=B8=A1?= <1425962791@qq.com> Date: Wed, 3 Dec 2025 18:29:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Power_Pico/User/GUI/common/lv_lib_pm.c | 35 ++++++++++++++++++++------ Power_Pico/User/GUI/common/lv_lib_pm.h | 3 ++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/Power_Pico/User/GUI/common/lv_lib_pm.c b/Power_Pico/User/GUI/common/lv_lib_pm.c index c090cbe..f00ae59 100644 --- a/Power_Pico/User/GUI/common/lv_lib_pm.c +++ b/Power_Pico/User/GUI/common/lv_lib_pm.c @@ -19,7 +19,7 @@ void lv_lib_pm_load_init_screen(void) { Page_t* initial_page = PageManager.pages[0]; if (initial_page->init) initial_page->init(); - lv_scr_load_anim(*initial_page->page_obj, LV_SCR_LOAD_ANIM_MOVE_LEFT, 200, 0, true); + lv_screen_load_anim(*initial_page->page_obj, LV_SCR_LOAD_ANIM_MOVE_LEFT, 200, 0, true); PageManager.current_index = 0; } @@ -36,7 +36,7 @@ void lv_lib_pm_register(Page_t* page) { } /** - * 切换到下一个页面(循环链表) + * 切换到数组中下一个页面(循环) */ void lv_lib_pm_next(void) { if (PageManager.count == 0) return; @@ -46,7 +46,7 @@ void lv_lib_pm_next(void) { // 初始化新页面并切换 if (next->init) next->init(); - lv_scr_load_anim(*next->page_obj, LV_SCR_LOAD_ANIM_MOVE_LEFT, 200, 0, true); + lv_screen_load_anim(*next->page_obj, LV_SCR_LOAD_ANIM_MOVE_LEFT, 200, 0, true); // 反初始化前页 if (prev->deinit) prev->deinit(); @@ -57,7 +57,7 @@ void lv_lib_pm_next(void) { } /** - * 切换到上一个页面(循环链表) + * 切换到数组中上一个页面(循环) */ void lv_lib_pm_prev(void) { if (PageManager.count == 0) return; @@ -67,7 +67,7 @@ void lv_lib_pm_prev(void) { Page_t* prev = PageManager.pages[prev_index]; if (prev->init) prev->init(); - lv_scr_load_anim(*prev->page_obj, LV_SCR_LOAD_ANIM_MOVE_RIGHT, 200, 0, true); + lv_screen_load_anim(*prev->page_obj, LV_SCR_LOAD_ANIM_MOVE_RIGHT, 200, 0, true); if (current->deinit) current->deinit(); @@ -77,10 +77,22 @@ void lv_lib_pm_prev(void) { /** * 跳转到指定索引页面 + * @param page_name 页面名称,传入 NULL 则根据索引跳转 * @param index 目标页面索引 */ -void lv_lib_pm_goto(uint8_t index) { - if (index >= PageManager.count || PageManager.count == 0) return; +void lv_lib_pm_goto(const char* page_name, uint8_t index) { + + if (page_name != NULL) { + // 根据页面名称查找索引 + for (uint8_t i = 0; i < PageManager.count; i++) { + if (strcmp(PageManager.pages[i]->name, page_name) == 0) { + index = i; + break; + } + } + } + + if(index >= PageManager.count || PageManager.count == 0) return; Page_t* current = PageManager.pages[PageManager.current_index]; Page_t* target = PageManager.pages[index]; @@ -89,10 +101,17 @@ void lv_lib_pm_goto(uint8_t index) { if (current->deinit) current->deinit(); PageManager.current_index = index; if (target->init) target->init(); - lv_scr_load_anim(*target->page_obj, LV_SCR_LOAD_ANIM_FADE_IN, 200, 0, true); + lv_screen_load_anim(*target->page_obj, LV_SCR_LOAD_ANIM_MOVE_LEFT, 200, 0, true); } } +/** + * 跳转到首页面 + */ +void lv_lib_pm_goto_first(void) { + lv_lib_pm_goto(NULL, 0); +} + /** * 获取当前页面 * @return 当前页面指针 diff --git a/Power_Pico/User/GUI/common/lv_lib_pm.h b/Power_Pico/User/GUI/common/lv_lib_pm.h index 244f200..43af8ec 100644 --- a/Power_Pico/User/GUI/common/lv_lib_pm.h +++ b/Power_Pico/User/GUI/common/lv_lib_pm.h @@ -31,7 +31,8 @@ void lv_lib_pm_register(Page_t* page); void lv_lib_pm_load_init_screen(void); void lv_lib_pm_next(void); void lv_lib_pm_prev(void); -void lv_lib_pm_goto(uint8_t index); +void lv_lib_pm_goto(const char* page_name, uint8_t index); +void lv_lib_pm_goto_first(void); Page_t* lv_lib_pm_get_current_page(void); void lv_lib_pm_handle_key_event(void* key_event);