diff --git a/hello b/hello index 1ffb089..68eff52 100755 Binary files a/hello and b/hello differ diff --git a/hello.c b/hello.c index a1ce2cf..bb59181 100644 --- a/hello.c +++ b/hello.c @@ -28,6 +28,12 @@ #include #include +/* §6.1 ①:Activity 归属。主界面(根,stack 空时 active()=0)绑定全部按钮控件; + * 全屏沉浸页为独立 Activity(无控件)——触摸它绝不命中主界面按钮(根治跨页残留)。 + * 进全屏 meow_ui_activity_push(ACT_FULL),退出 pop 回根(主界面按钮恢复可点,对象复用)。 */ +#define ACT_HOME 0 +#define ACT_FULL 1 + static meow_widget *g_btn; static meow_widget *g_nbtn[6]; /* 通知触发按钮行 */ static meow_widget *g_cancel; /* 取消最近一条通知 */ @@ -128,13 +134,19 @@ static void notif_cancel(void) * - fullscreen(1) + collapsed(1):状态栏「上收出屏只留提示线」(不完全沉浸,inset=4px), * 顶部提示线热区仍可下拉,左缘返回手势(app 已注册 on_swipe)仍生效——SDK 自动处理,非 app 拦截; * - fullscreen(0) + collapsed(0):恢复整条状态栏主界面。 - * SDK 基座默认瞬切(g_sbar_collapse_anim_ms=0);如需过渡动画可先 meow_ui_statusbar_animate(ms)。 */ + * SDK 基座默认瞬切(g_sbar_collapse_anim_ms=0);如需过渡动画可先 meow_ui_statusbar_animate(ms)。 + * §6.1 ①:全屏 = 独立 Activity——进时压栈 ACT_FULL(主界面控件因 owner=ACT_HOME 不再参与命中, + * 根治「全屏页触摸到主页按钮区域闪现」);退时弹栈回根,主界面按钮恢复可点(对象复用零重建)。 */ static void set_fullscreen(int on) { g_fullscreen = on ? 1 : 0; meow_ui_set_fullscreen(g_fullscreen); meow_ui_statusbar_set_collapsed(g_fullscreen); - meow_log(MEOW_LOG_INFO, g_fullscreen ? "fullscreen ON (collapsed)" : "fullscreen OFF (restore)"); + if (on) meow_ui_activity_push(ACT_FULL); + else meow_ui_activity_pop(); + meow_log(MEOW_LOG_INFO, g_fullscreen ? "fullscreen ON (collapsed), activity->%d" + : "fullscreen OFF (restore), activity->%d", + meow_ui_activity_active()); } static void redraw(void) @@ -219,7 +231,12 @@ static void on_swipe_progress(int x_start, int dx) static void on_swipe(int dir, int dx, int dy) { (void)dx; (void)dy; - if (dir == MEOW_SWIPE_LEFT) { meow_log(MEOW_LOG_INFO, "exit:swipe"); meow_ui_request_exit(); } + if (dir == MEOW_SWIPE_LEFT) { + /* §6.1 导航栈语义:非根(全屏)→ 左滑返回主页(pop),不退出;根 → 退出回应用列表。 + * 保证 on_swipe(LEFT) 在沉浸页=退出全屏回主页,而非直接退出整个 app。 */ + if (g_fullscreen) { set_fullscreen(0); redraw(); } + else { meow_log(MEOW_LOG_INFO, "exit:swipe"); meow_ui_request_exit(); } + } } static void on_tick(void)