diff --git a/UI/UI_ExpertMode.c b/UI/UI_ExpertMode.c index 1504a79..5f19748 100644 --- a/UI/UI_ExpertMode.c +++ b/UI/UI_ExpertMode.c @@ -6,7 +6,10 @@ void UI_ExpertMode_Init(void) mGuiData[GUI_TAB_LAST_INDEX].Current = mGuiData[GUI_TAB_INDEX].Current; //mGuiData[GUI_AUTOBAND_SW].Current = 1; UI_ReloadTonePreset(); /* 必须在 TAB=专业 之后换库,否则仍是万能 3.bin */ - Show_home_UI(); + if (CurrUIProcress == UI_SongMode_Process) + Show_home_UI_Diff(); + else + Show_home_UI(); pCurrentTouch_Area = Touch_Areas; } diff --git a/UI/UI_FreeMode.c b/UI/UI_FreeMode.c index 4fcfa6f..afe2d14 100644 --- a/UI/UI_FreeMode.c +++ b/UI/UI_FreeMode.c @@ -7,7 +7,10 @@ void UI_FreeMode_Init(void) mGuiData[GUI_TAB_LAST_INDEX].Current = mGuiData[GUI_TAB_INDEX].Current; //mGuiData[GUI_AUTOBAND_SW].Current = 1; UI_ReloadTonePreset(); /* TAB=普通 后再加载 1.bin */ - Show_home_UI(); + if (CurrUIProcress == UI_SongMode_Process) + Show_home_UI_Diff(); + else + Show_home_UI(); pCurrentTouch_Area = Touch_Areas; } diff --git a/UI/UI_SongMode.c b/UI/UI_SongMode.c index ac9138e..6ba6527 100644 --- a/UI/UI_SongMode.c +++ b/UI/UI_SongMode.c @@ -68,6 +68,21 @@ void Show_home_UI(void) //LCD_BLK_Set(); } +/* 三模式主页互切:只重绘变化区,避免整屏清导致闪烁 */ +void Show_home_UI_Diff(void) +{ + const LEBEL_UI *mode = &UI_Label[GUI_MODE_PARAM]; + + UI_ClearFocus(); + /* 清 TAB/标题条,避免万能↔普通/专业互切留下残影 */ + LCD_FillByColor(mode->x, mode->y, + (uint16_t)(mode->x + mode->w), + (uint16_t)(mode->y + UI0902_TAB_H + 4), + UI0902_BG_COLOR); + label_ModeSelece_ui(mode, &mGuiData[GUI_MODE_PARAM]); + label_Tab_Select_ui(&UI_Label[GUI_PLAY_SECTION], &mGuiData[GUI_TAB_INDEX]); +} + int8_t delta = 0; void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value) { @@ -280,7 +295,11 @@ void UI_SongMode_Init(void) mGuiData[GUI_TAB_INDEX].Current = 0; mGuiData[GUI_TAB_LAST_INDEX].Current = mGuiData[GUI_TAB_INDEX].Current; UI_ReloadTonePreset(); /* TAB=万能 后再加载 3.bin */ - Show_home_UI(); + /* 已在主页互切用差分;从 Idle/设置进入仍整页 */ + if (CurrUIProcress == UI_SongMode_Process) + Show_home_UI_Diff(); + else + Show_home_UI(); pCurrentTouch_Area = Touch_Areas; } diff --git a/UI/UI_global.h b/UI/UI_global.h index 8a59db6..0101d83 100644 --- a/UI/UI_global.h +++ b/UI/UI_global.h @@ -208,6 +208,7 @@ void GET_Num_Str(int16_t NUM, uint8_t ValidLen, char* Str, uint8_t hasSign); void show_Param(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void Show_home_UI(void); +extern void Show_home_UI_Diff(void); extern void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value); //extern void Refresh_Transpose(uint8_t last_data, const LEBEL_UI *UI, GUI_SWITCH *Group); extern void Refresh_Transpose(const LEBEL_UI *UI, GUI_SWITCH * Group);