M2.60→M2.61 骨架: SDK Activity 栈 + 控件归属(agent-122) + 按钮去圈/即时重绘(agent-119) + SDK 模板文档(agent-121)
- SDK §6.1 三层控件模型: Activity栈(push/pop/active) + 页面控件归属 owner + meow_ui_global_* 骨架(②) + 系统级仅内部接口(③) - meow_widget 加 owner; live_btn_hit/meow_widget_hit 仅 active activity 命中; touch_refresh stale 保护 - 根治"全屏页触摸主页按钮闪现"(跨页面控件残留); 控件对象复用弹栈不重建 - hello 迁移双 Activity(home/full): 全屏左滑=弹栈回主页, 根左滑=退出 - agent-119 按钮去圈(纯色accent+黑12/24%)+即时局部重绘保留; agent-121 SDK模板§5.3-5.7
This commit is contained in:
1 parent
102b86c4f4
commit
106824d719
2 files changed
+20
-3
No files matched your search
@@ -28,6 +28,12 @@
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
/* §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)
|
||||
|
||||
Reference in new issue
Block a user