From 6824defdf9f99519c8b165aed277894b2ae333a0 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Sun, 30 Aug 2026 15:27:10 +0800 Subject: [PATCH] =?UTF-8?q?M2.60=E2=86=92M2.61=20=E9=AA=A8=E6=9E=B6:=20SDK?= =?UTF-8?q?=20Activity=20=E6=A0=88=20+=20=E6=8E=A7=E4=BB=B6=E5=BD=92?= =?UTF-8?q?=E5=B1=9E(agent-122)=20+=20=E6=8C=89=E9=92=AE=E5=8E=BB=E5=9C=88?= =?UTF-8?q?/=E5=8D=B3=E6=97=B6=E9=87=8D=E7=BB=98(agent-119)=20+=20SDK=20?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=96=87=E6=A1=A3(agent-121)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- MEOW_APP_SDK.md | 314 +++++++++++++++++++++++++ docs/MEOWOS_SPEC_REF.md | 2 + patch_v2/hello_app/hello | Bin 197628 -> 202172 bytes patch_v2/hello_app/hello.c | 23 +- patch_v2/meow_launcherd/meow_launcherd | Bin 392700 -> 393276 bytes patch_v2/sdk/build_sdk.sh | 2 +- patch_v2/sdk/meow_ui.h | 37 +++ patch_v2/sdk/meow_ui_activity.c | 33 +++ patch_v2/sdk/meow_ui_gfx.c | 4 + patch_v2/sdk/meow_ui_global.c | 61 +++++ patch_v2/sdk/meow_ui_input.c | 7 + patch_v2/sdk/meow_ui_internal.h | 13 + patch_v2/sdk/meow_ui_widget.c | 140 +++++++++-- 13 files changed, 613 insertions(+), 23 deletions(-) create mode 100644 patch_v2/sdk/meow_ui_activity.c create mode 100644 patch_v2/sdk/meow_ui_global.c diff --git a/MEOW_APP_SDK.md b/MEOW_APP_SDK.md index 1cd3ecc..e6e0cfb 100644 --- a/MEOW_APP_SDK.md +++ b/MEOW_APP_SDK.md @@ -202,6 +202,270 @@ const char *meow_ime_text(void); --- +### 5.2 横向分页(横向滑动切换页面)设计模板 [源:2026-08-30] + +> **性质**:SDK 设计模板,供后续 APP 主页/子页**按需选用**;参照 HibyOS 播放器主页横划进播放页的实现思路。**B1 不实现**,本小节只列设计要点与接口草案(标注「草案/待定案」),供后续落地时对齐,避免与既有手势/控件约定冲突。 + +**模板目标**:多页横向滑动切换,流畅不卡;供 APP 主页/子页复用。 + +**1) 手势分流(关键,与既有手势不冲突)**:按**起始位置**分流,三者互斥—— +- 触点落在**屏幕左缘(≤24px)热区** → SDK **左滑返回**(不动画,`on_swipe(LEFT)`,见 §6 与 spec-ref §5.1)。 +- 触点落在**中部**左/右滑 → **页切换**(页视图接管)。 +- **顶部**下滑 → **通知中心**(不夺走既有顶部热区)。 +> 命中判定:先判断按下 x 落在左缘/顶部热区还是中部,再定手势语义;互斥,不与既有「左缘返回 + 顶部下滑通知中心」冲突。 + +**2) 预渲染快照缓存(抗卡顿核心)**: +- 相邻页各预渲染一张 `back_buf` 快照(页小数据 + 内容缓存)。切换时**只 blit 快照**,**不重跑布局/控件绘制**(页多不卡的关键)。 +- 缓存上限 = 当前页前后各 1 页(共 3 张 ≈ 3 × 屏宽 × 高 × 2B;480×720 RGB565 每张 ≈ 0.66MB → 3 张约 2MB,远低于 14MB 内存预算;按更保守 2MB/张 × 3 ≈ 6MB 口径亦可接受)。 +- **LRU 淘汰**远页;回滚重建时显示「加载中」轻提示。 + +**3) 拖动 / 吸附**: +- 手指**跟手平移当前页 + 露出下一页边缘**:单帧内多次 blit 位移 + **一次** `meow_present`(vsync 门控 ≤60 帧,**不做逐帧重排版**)。 +- 松手**过阈值** → 补 2-4 帧平移动画**吸附相邻页**;**未过阈值** → 回弹当前页;**首/末页**不滑(或橡皮筋回弹)。 + +**4) 性能要点**:切换 = 快照 blit + 位移平移(**内存拷贝远快于重绘**) + 节流 present;拖动时**零 UI 重算**(不触发布局/控件重绘)→ 页多不卡。 + +**5) SDK 建议 API 草案(「草案/待定案」,不实现)**: +```c +typedef struct meow_page_view meow_page_view; + +/* 数据源回调:页数 / 每页渲染回调 */ +typedef struct { + int (*page_count)(void *ctx); /* 总页数 */ + void (*draw_page)(meow_page_view *pv, int page, + uint16_t *snapshot, void *ctx); /* 渲染该页到快照 buf */ + void *ctx; +} meow_page_view_source; + +meow_page_view *meow_page_view_create(const meow_page_view_source *src, + int x, int y, int w, int h); +void meow_page_view_free(meow_page_view *pv); +int meow_page_view_set(meow_page_view *pv, int page); /* 跳页(快照重建 + 吸附动画) */ +int meow_page_view_current(const meow_page_view *pv); /* 当前页 */ +``` +> SDK **内部**处理:手势分流(**左缘返回除外**,仍归 SDK 手势层 `on_swipe(LEFT)`)、快照缓存、平移吸附、LRU 淘汰、加载中提示。实现时以 `meow_ui.h` 为准。 + +**6) 关联**:与既有「**全局左缘返回 + 顶部滑条 + 状态栏收合/通知中心**」手势约定一致(spec-ref §5.1/§3.1)——左缘返回仍为全局手势(`on_swipe(LEFT)`/`on_swipe_progress`);页视图**只接管中部横滑**;顶部下滑仍归通知中心。三者按起始位置分流,互斥不冲突。 + +### 5.3 SDK 可复用设计模板清单 [源:2026-08-30] + +> **性质**:把 MeowOS 应用开发里反复出现的**界面结构**抽象为可复用的设计模板(设计要点 + 交互约定 + 绘制/数据模型 + 性能注意 + 复用组合),供各 App 与设置页按需选用、观感统一。**本小节是目录**:列出全部模板及优先级/状态;已展开为设计模板者见对应小节。**所有模板与既有手势/控件约定一致**(见 §5.2/§6/spec-ref §5.1/§3.1),且相互可组合。 + +| # | 类别 | 模板 | 一句用途 | 优先级/状态 | +|---|------|------|---------|------------| +| ① | A | 分组设置表单 | 分组标题 + 行(开关/滑条/下拉/子菜单/信息),数据源 = setting 键 | ✅ **A+B 先行**(已展开 §5.4) | +| ② | A | 列表+选择 | 行数据源回调(图标+标题+副标题+右侧操作),滚动/单选/多选/搜索 | ✅ **A+B 先行**(已展开 §5.5) | +| ③ | B | 弹窗/对话框 | 确认/选择/输入/信息,模态/非模态,返回/电源键关闭 | ✅ **A+B 先行**(已展开 §5.6) | +| ④ | B | 顶/底部下拉面板 | 快捷设置/通知中心/侧边栏,收合动画、内容懒载 | ✅ **A+B 先行**(已展开 §5.7) | +| ⑤ | C | 媒体控制/播放页 | 进度/控制/封面/歌词滚动 | 🔵 随播放器 app 细化 | +| ⑥ | C | 沉浸内容页 | 全屏/左滑返回/图片缩放/歌词随乐 | 🔵 随播放器 app 细化 | +| ⑦ | C | 进度/加载 | 进度条/转圈/骨架屏/下拉刷新 | 🔵 随对应 app 细化 | +| ⑧ | D | 卡片/磁贴 | 圆角卡片/图标宫格/应用网格 | 🔵 随 MD3 细化 | +| ⑨ | D | 导航栏/工具栏 | 顶标题+返回/底栏 tabs/面包屑 | 🔵 随导航细化 | +| ⑩ | D | 列表项布局 | 图标+文本+右侧操作,点击/长按/滑删 | 🔵 随 MD3 细化 | +| ⑪ | E | 拖拽排序/长按菜单/时间轴 | 拖拽排序/长按菜单/时间轴 | ⚪ **E 后置(可选)** | + +**优先级 / 状态说明**: +- **A+B 先行(近期展开,§5.4-§5.7)**:设置表单/列表/弹窗/面板是现阶段 MeowOS 应用(设置、通知、App 列表、WiFi)最常用的四类结构,先定下来沉淀范型,落地时可复用 launcher 已调通的 `s_row_*`/`s_dd_modal` 逻辑。 +- **C-D 随对应 app/MD3 细化**:媒体/沉浸/加载随播放器类 app 落地时细化;卡片/导航/列表项随 MD3 观感统一时细化——避免过早抽象、先让 app 跑通。 +- **E 后置**:拖拽排序/长按菜单/时间轴为可选增强,非首批通用结构,后续需要时再立项。 +- **已含横向分页**:多页横向滑动已在 §5.2 单独展开,**不重复**列入本清单。 +- **可扩展**:本清单按需增项(新模板补一行;若展开则新增一节),编号后续连续。 + +> **手势一致性(此处只述结论,不重复展开)**:全部模板与既有「**全局左缘返回 + 顶部滑条 + 状态栏收合 + 通知中心热区**」手势约定一致(spec-ref §5.1/§3.1、本文件 §5.2/§6)——左缘 ≤24px 内划≥90px 抬手=返回(`on_swipe(LEFT)`/`on_swipe_progress`);顶部下滑=通知中心;**中部**横滑/竖滑才归内容。各模板**不重定义**这些全局手势,只在其上做内部命中分流。 + +--- + +### 5.4 设计模板 A① 分组设置表单 [源:2026-08-30] + +> **参照**:`patch_v2/meow_launcherd/meow_launcherd.c` 设置页(`SMENU` 表 + `srow_t` + `draw_settings_page`/`run_settings_page`)。**性质**:SDK 设计模板,供 App/设置页按需选用;`meow_ui.h` 现状控件最小集(按钮/滑条/开关/列表,§5)只提供单控件,本模板是把它们**组织成「分组设置表单」的结构范型**。API 为「草案/待定案」,不实现。 + +**摘要**:一页设置表单 = 若干**分组标题行** + 若干**设置行**。每行 `label + 控件`,控件类型决定取值方式——开关 / 滑条 / 下拉(枚举·预设)/ 子菜单 / 信息 / 列表。数据源 = **setting 键**(经 `meow_settings_*` 读写,见 spec-ref §4),UI 只绑定键、不直接触存储文件。 + +**关键交互**: +- **分组标题行**(`key=NULL`)仅展示分组名(如「显示/网络/电源/字体主题」),不可选中。 +- **行命中分发**:触摸命中某行后按行控件类型分发—— + - **开关**:`meow_settings_set_switch(key, !on)`(或 `set_bool`),行右侧画开关。 + - **滑条**:按下/拖动沿 track 取值 → `meow_settings_set_int(key, v)`(后台 clamp 到 min..max + 同步缓存),行内画 track+thumb+当前值。 + - **下拉(枚举/预设)**:点行 → 弹**单选**弹窗(复用 B③ §5.6)→ `meow_settings_set_enum/set_str(key, idx)`。 + - **子菜单**(如字体 family→weight 两级):点行 → 二级列表(复用 A② §5.5 容器)→ 选中写回串值(如卡根相对路径 `MeowOS/fonts///font.png`)。 + - **信息/列表**:点行 → 打开只读详情或子列表(如「关于本机」「WiFi 连接状态」「附近WiFi」)。 +- **滚动**:整行步进(`SROW_H`),选中行钳制在视口内;列表拖动滚动(纵向位移超阈值判滚动、非 tap)。 +- **返回/取消**:左缘返回手势回上级(全局手势,不由本模板重定义)。 + +**绘制/数据模型**: +- **行描述结构**(参照 `srow_t`):`{label, key, ctrl(min,max,step), presets/preset_labels/preset_n, net_list}`;`ctrl ∈ {HEADER, SWITCH, SLIDER, ENUM, PRESET, INFO, LIST}`;`key=NULL` 表示分组标题行。 +- **单卡片 + 固定行高**:`SET_CARD_X/W/Y/H` + `SROW_H`(行高统一,便于整行滚动对位与裁剪;视口高取行高的整数倍)。 +- **可见性**:`s_row_visible(i)`(如多字体 6 个 class 行仅在开关开时可见)→ 压缩索引 `s_vis_of/vis_at`;标题行恒显。 +- **值格式化**:`s_fmt_*`(秒→「×分×秒」、分钟→「HH:MM」、枚举→中文标签、预设项显示名)。 +- **命中/滚动换算**:`s_row_at_content_y(cy)`(content 坐标→行号);滑条单独记录 track 纵坐标供拖动命中。 + +**性能注意**: +- **局部刷新**:静态展示不主动刷新,仅在交互时经 `meow_dirty` 区标脏 + `meow_ui_flush_region` 只刷变化区(滑条拖动/开关切换/选中行高亮)。 +- 滑条拖动**实时** `set_int`(后台 clamp、同步缓存,不逐 1% 落盘),松手才落盘;避免拖动时每帧写文件。 +- 滚动用整行步进 + 区间钳制,不做逐像素重排。 + +**复用组合**:A① 是容器;行内容用 A②(列表项布局)/ B③(下拉弹窗)+ SDK 控件(`meow_btn/slider/switch`);设置页顶部「快捷开关」组可再被 B④ 面板复用。 + +**API 草案(「草案/待定案」,不实现;实现以 `meow_ui.h` 为准)**: +```c +typedef enum { MEOW_FROW_HDR, MEOW_FROW_SWITCH, MEOW_FROW_SLIDER, + MEOW_FROW_ENUM, MEOW_FROW_PRESET, MEOW_FROW_INFO, + MEOW_FROW_LIST } meow_frow_type_t; +typedef struct { + const char *label; + const char *key; /* setting 键,经 meow_settings_* 读写;NULL=分组标题行 */ + meow_frow_type_t ctrl; /* 控件类型 */ + int min, max, step; /* SLIDER 取值域/步进 */ +} meow_frow_t; +meow_widget *meow_ui_setform_create(const meow_frow_t *rows, int n, int x, int y, int w, int h); +int meow_ui_setform_sel(meow_widget *f); /* 当前选中行 */ +void meow_ui_setform_scroll(meow_widget *f, int offset); /* 整行步进滚动 */ +int meow_ui_setform_hit_row(meow_widget *f, int x, int y);/* 命中行号(-1=分组标题/卡片外) */ +``` +> 说明:`meow_ui_setform_*` 与 launcher 的 `srow_t`/`SMENU`/`run_settings_page` 同构(一行=label+key+控件),实现期可直接借已调通逻辑。**区分「行描述表」与「每行当前值」**——值一律经 `meow_settings_get_*` 读取,不缓存在行结构里(避免双写漂移)。 + +--- + +### 5.5 设计模板 A② 列表+选择 [源:2026-08-30] + +> **性质**:SDK 设计模板,供 App 主页/子页按需选用;对既有 `meow_list_create`(B1 最小集,§5,仅 label 文本)做**结构化扩展**(行=图标+标题+副标题+右侧操作 + 选中态)。API「草案/待定案」,不实现。 + +**摘要**:可滚动选择容器。**行数据源回调**逐行给出(图标 / 标题 / 副标题 / 右侧操作 / 是否可选),容器负责绘制/滚动/选中/命中;支持**单选、多选、长按**(上下文操作)。适合「已保存网络 / 附近WiFi / 蓝牙设备 / 歌曲列表 / 设置子菜单」等。 + +**关键交互**: +- **行内容**:图标(可选 `meow_img*` 或内置符号)+ 标题 + 副标题(次要信息,如 SSID/设备名/时长)+ **右侧操作**(如箭头/开关/详情钮)。点整行=选中/进入;点右侧操作=该行动作。 +- **单选/多选**:`mode` 决定——单选(高亮当前 + 确认回填);多选(复选标记);「无选择」= 纯入口列表。 +- **长按**:长按行 → 上下文菜单(如删除/重命名),或不弹菜单仅标记长按态(复用 B③ 小弹窗)。 +- **搜索/过滤**:顶部搜索框(IME 输入,§5.1)→ 数据源回调按关键字过滤重算行数(B1 IME 仅英文/数字)。 +- **滚动**:局部 dirty;整行步进或像素滚动均可;首/末行钳制(橡皮筋或截断)。 + +**绘制/数据模型**: +- **行数据源回调**(`meow_list_source` 的结构化扩展): + ```c + typedef struct { + const meow_img *icon; /* 可选 */ + const char *title; /* 主文本 */ + const char *subtitle; /* 副文本,可空 */ + int right; /* 右侧操作类型(无/箭头/开关/详情钮) */ + int enabled; /* 可选中性 */ + } meow_list_item; + typedef int (*meow_list2_source)(int idx, meow_list_item *out, void *ctx); /* 返回 1=有该项,0=越界 */ + ``` +- **容器**:视口(x,y,w,h) + 总行数(count,可再查询更新) + 滚动偏移;`count` 由数据源动态变化(搜索过滤/懒加载)。 +- **命中**:行 = `y/row_h`;**右侧操作细分命中**(行右侧 1/3 区域判操作,其余判整行)。命中判定避免 goodix 时序问题——**按下不锁原点**、抬手时用最新有效坐标(参照 §5.6 与 meow_touch 语义)。 +- **选中态**:单选高亮条 / 多选复选标记,用主题 accent 色。 + +**性能注意**: +- **局部 dirty**:滚动/翻页只刷变化行(`meow_ui_flush_region` 行块或视口带),不整屏重绘;数据源回调每行**轻量填充**,不在回调里做 IO(大图标用缓存/延迟加载)。 +- **懒加载**:行多(如几百首歌曲)时数据源按需返回,仅落入视口 ± 预取若干行才真正加载。 +- **内存**:行数据瞬时(回调填充到栈上 `meow_list_item`),不长期持有全部行对象;图标句柄归属调用方。 + +**复用组合**:A② 是 A① 的子菜单/列表行、B③ 的「选择」数据源、播放页歌单的通用底座;选中结果回填到 A① 的下拉项。 + +**API 草案(「草案/待定案」,不实现;实现以 `meow_ui.h` 为准)**: +```c +typedef enum { MEOW_LIST_SEL_NONE, MEOW_LIST_SEL_SINGLE, MEOW_LIST_SEL_MULTI } meow_list_sel; +typedef int (*meow_list2_source)(int idx, meow_list_item *out, void *ctx); +meow_widget *meow_ui_listview_create(int x, int y, int w, int h, int count, + meow_list2_source src, void *ctx, meow_list_sel mode); +void meow_ui_listview_set_sel(meow_widget *lv, int idx); /* 单选/多选当前选中集 */ +int meow_ui_listview_get_sel(meow_widget *lv, int *out, int max); +void meow_ui_listview_scroll(meow_widget *lv, int offset); +int meow_ui_listview_hit(meow_widget *lv, int x, int y); /* 命中行;右侧操作另判 */ +``` +> 说明:既有 `meow_list_create`(label-only)保留;`meow_ui_listview_*` 为**结构化扩展**(图标/副标题/右侧/选中),可作为真则替换裸 label 列表。 + +--- + +### 5.6 设计模板 B③ 弹窗/对话框 [源:2026-08-30] + +> **参照**:`meow_launcherd.c` `s_dd_modal()`(WiFi 列表 / 关于本机 / 字体子菜单共用同一模态)。**性质**:SDK 设计模板,覆盖 **确认/选择/输入/信息** 四种;模态/非模态;返回/电源键关闭;遮罩。`meow_ui.h` 无通用弹窗,本模板为「草案/待定案」。 + +**摘要**:在应用之上弹出**居中卡片**(遮罩压暗 + 圆角卡片 + 标题 + 内容 + 操作),用于打断当前流程的一次性决策。按用途分四型:确认(是/否)、选择(单选列表,可复用 A② 数据源)、输入(复用 IME §5.1)、信息(只读展示,如「关于本机」)。 + +**关键交互**: +- **模态 vs 非模态**:模态=遮罩吞掉背景输入、打开期间应用主界面不可交互(返回/电源关闭);非模态=不遮罩、可同时操作背景(如播放页浮层)。默认模态。 +- **关闭途径**:① 点操作钮确认/取消;② 点遮罩外=取消;③ 返回键(左缘返回手势 / 虚拟返回键)→ 取消;④ **电源键单击** → 确认当前高亮项(launcher `s_dd_modal` 的电源抬起=确认语义)。音量键上下移动高亮。 +- **选择弹窗**:选项列表高亮 + 预勾选(`cur` 非 -1 时);`cur=-1` = 只读展示不预选(「关于本机」)。 +- **物理键可访问**:音量=移动高亮、电源=确认、返回=取消(借鉴 `s_dd_modal` 的 `kp_*` 键轮询)。 + +**绘制/数据模型**: +- **绘制**(参照 `s_dd_modal`,即画即显一次成型): + 1. 全屏遮罩 `meow_ui_fill_rect_alpha(0,0,W,H, 0x000000, 150)`(压暗)。 + 2. 居中卡片 `meow_gfx_fill_round(d_x,d_y,d_w,d_h, 16, surface_container)` + `meow_ui_draw_rect_round(..., 16, outline)` 描边;圆角 16。 + 3. 标题(theme `on_surface`,20 号)+ 选项行(行高 ~48;选中行 `primary` α36 高亮 + 白字;预勾选项右侧画小方块)。 + 4. **不压状态栏**:卡片 y 钳制 `d_y ≥ meow_ui_statusbar_height()`;底部留 ≥20px。 +- **尺寸**:宽 ~348、居中;高 = 标题 + n×行高 + 内边距;内容过多滚动(或扩容)。 +- **数据模型**:`{title, item[], n, cur, type}`;选择型=选项数组;信息型=多行文本;输入型=携 IME ctx。 +- **命中**:抬手时用**最新有效坐标**(不锁按下原点,goodix 免疫);卡片内命中→选项;卡片外→取消。打开前**双排空触摸残留**(`s_dd_modal` 的 open 后 read 排空→40ms→再排空,吸收 goodix 抬起长尾)。 + +**性能注意**: +- **即画即显**:弹窗打开时**一次性**画好遮罩+卡片+选项,再进事件循环(`s_dd_modal` 初始绘制一次,仅高亮变化才重绘);不每帧重画静态内容。 +- 重绘只刷变化区(切换选中高亮时,仅重画遮罩+卡片或行块 `flush_region`)。 +- 无动画(B1 无 tween);如需淡入淡出,用 `fill_rect_alpha` 单次叠加以免每帧重算。 + +**复用组合**:B③ 是 A① 下拉(enum/preset 选中)、A② 长按上下文菜单、B④ 面板关闭确认、电源菜单的**通用弹窗底座**;输入型接 IME §5.1;选择型数据源同 A②。 + +**API 草案(「草案/待定案」,不实现;实现以 `meow_ui.h` 为准)**: +```c +typedef enum { MEOW_DLG_CONFIRM, MEOW_DLG_SELECT, MEOW_DLG_INPUT, MEOW_DLG_INFO } meow_dlg_t; +typedef struct meow_dialog meow_dialog; +meow_dialog *meow_ui_dialog_create(meow_dlg_t t, const char *title); +void meow_ui_dialog_set_items(meow_dialog *d, const char *const *item, int n, int cur); +void meow_ui_dialog_set_ime(meow_dialog *d, meow_ime_ctx *ime); /* INPUT 型 */ +void meow_ui_dialog_show(meow_dialog *d); /* 阻塞到确认/取消 */ +int meow_ui_dialog_result(meow_dialog *d); /* 选中=选项下标;输入=IME buf;确认=1/0 */ +void meow_ui_dialog_close(meow_dialog *d); +``` +> 说明:模态=默认;非模态=`show` 非阻塞变体(启动后由 `on_tick` 驱动)。返回/电源关闭语义**沿用全局约定**(返回=取消;电源=确认当前高亮),本模板不重定义。 + +--- + +### 5.7 设计模板 B④ 顶/底部下拉面板 [源:2026-08-30] + +> **性质**:SDK 设计模板,覆盖**顶部下拉**(快捷设置/通知中心)与**底部面板**(操作抽屉/侧边栏),带**收合动画**与**内容懒载**。**关键前提**:与既有「全局左缘返回 + 顶部滑条 + 状态栏收合 + 通知中心热区」手势一致(spec-ref §5.1/§3.1、A-13)——本模板**不夺走**「顶部下滑=通知中心」,而是**按起始位置/触达途径与既有热区分流**。API「草案/待定案」。 + +**摘要**:沿某种边缘滑出/推入的**非全屏浮层**。顶/底部下拉面板 = 手指从对应边缘向内滑 → 面板从边缘滑出(带收合动画),内容按需加载。典型:快捷设置(亮度/音量/开关)、通知中心(列表)、底部操作抽屉;可再收合。 + +**关键交互**: +- **手势分流(互斥,与既有约定一致)**: + - **左缘 ≤24px 向内划** → **全局左缘返回**(`on_swipe(LEFT)`,SDK 兜底;本面板**不**接管)。 + - **顶部边缘下滑** → **通知中心**(既有热区,`on_swipe(DOWN)`/顶部热区;全屏下热区缩小但仍保留,见 spec-ref §5.1/A-13)。 + - **底部边缘上滑** → **底部面板**(本模板新增;底部边缘无既有冲突)。 + - **快捷设置**:为不与通知中心冲突,**待定案**——建议从通知中心二级拉出、或屏幕右上角/右侧缘单独热区触达、或「通知中心内点箭头展开」。**不新占顶部下滑**(避免与 §5.1 冲突)。 + - **侧边栏**(可选):右缘向左滑出(右侧无既有手势,安全)。 +- **收合动画**:跟手平移面板(手指拖多长露多长),松手**过半阈值** → 补 2-4 帧**短插值**吸附到位;**未过** → 回弹。动画只在松手时做一次,不做逐帧几何重算(B1 无 tween;短插值=有限帧序列)。 +- **内容懒载**:面板**首次拉出**才构建内容(或预建空容器),避免打开即全量绘制;面板内滚动局部 dirty。 +- **关闭**:点面板外关闭 / 再划回边缘收合 / 返回键关闭(模态时)。 + +**绘制/数据模型**: +- 面板 = 一个**矩形区域**(顶/底边缘滑出),内容区 + 头部(把手/标题/关闭钮)。绘制走 back_buf,`meow_ui_flush_region` 只刷面板交汇区。 +- **内容**:快捷设置=一组开关/滑条(复用 A① 控件);通知中心=列表(复用 A②);操作抽屉=一组按钮(复用 `meow_btn`)。 +- **数据模型**:`{edge, x, y, w, h, content_widget, collapsed, anim_t}`;内容视图句柄(可为 A①② 或自定义);懒载=首次展开时创建内容视图。 +- **布局 inset**:顶部面板 y 钳制 `≥ meow_ui_statusbar_height()`(非全屏不压状态栏);全屏时顶部热区缩小。 + +**性能注意**: +- **内容懒载**:展开才构建;收合后保留视图(缓存)或销毁(按需)。 +- **收合动画**:短插值(≤4 帧),只 blit 面板+交汇带,**零内容重排**(内容已预渲染到 offscreen 或复用快照,与 §5.2 快照思想同源)。 +- **局部 dirty**:面板滑入滑出用 `meow_ui_flush_region` 刷边界带;内容行变化刷行块。 + +**复用组合**:B④ 顶栏=快捷设置(A① 控件组)+ 通知中心(A② 列表);底部面板=操作抽屉(`meow_btn` 组 / A② 动作行);侧边栏=A② + 导航。 + +**API 草案(「草案/待定案」,不实现;实现以 `meow_ui.h` 为准)**: +```c +typedef enum { MEOW_PANEL_TOP, MEOW_PANEL_BOTTOM, MEOW_PANEL_EDGE_R } meow_panel_edge; +typedef struct meow_panel meow_panel; +meow_panel *meow_ui_panel_create(meow_panel_edge e, int x, int y, int w, int h); +void meow_ui_panel_set_content(meow_panel *p, meow_widget *content); /* 懒载:首展创建 */ +int meow_ui_panel_expand(meow_panel *p); /* 1=展开(短插值动画) 0=收合;返回位移 */ +int meow_ui_panel_is_open(const meow_panel *p); +void meow_ui_panel_set_collapsed(meow_panel *p, int collapsed); +``` +> 说明:顶部面板**默认不占用「顶部下滑=通知中心」**(§5.1)——顶部热区归属通知中心;快捷设置在通知中心内二段展开为**待定案**(见关键交互),实现前须列出可与左缘返回/通知中心分流的具体触达途径,勿凭空抢占。 + +--- + ## 6. 输入层 / 生命周期(B1 部分 + B2 衔接) **B1(本阶段)**:应用不再自读 `/dev/input/event*`,meow_ui 建立输入线程,把按键/触摸翻译成语义事件回调: @@ -233,6 +497,54 @@ void meow_ui_swipe_hint(int x); - `meow_ui_run` 改为从 IPC 收启动链路(`MEOW_CHAIN`/`MEOW_ACTIVITY` 环境变量)初始化导航栈; - 返回 = 栈回退,到根才 `meow_ui_request_exit()`。**本文档 §5 的控件与 §3/§4 绘制在 B2 不变**,只换输入/导航后端。 +### 6.1 控件生命周期与归属(Activity 栈 + 三层控件模型)[源:2026-08-30] + +> **性质**:SDK 控件生命周期的权威约定(B1/B2 均遵守)。根治「跨页面控件残留」——控件命中/绘制必须严格绑定其所属页面,否则会出现"按钮已不可见但仍被触摸命中"(如全屏页触摸到主页按钮位置闪现)。 + +**核心:控件严格归属创建它的 Activity,不跨页面共享。** + +#### 三层职责(从 App 到系统,风险从低到高) + +| 层 | 谁负责 | 谁能用 | 生命周期 | +|---|---|---|---| +| **① 页面控件** | 归属唯一 owner Activity | App | 随 Activity 栈;owner 在栈顶(active)才绘制+响应触摸 | +| **② App 跨 Activity 控件** | **SDK 托管**(逻辑+渲染,框架职责) | App 可声明使用 | 钉在 App 的 Activity 栈**之上**,跨 Activity 常驻 | +| **③ 系统级控件** | MeowOS/SDK 框架内部 | **仅系统组件,用户 App 禁调用** | 随系统,不开放 | + +- **① 页面控件**:`meow_btn_create` 等创建时绑定当前 Activity;命中(`live_btn_hit`)只在**当前 active Activity 的控件集**里找;对象**不销毁**(Activity 内对象池复用),弹栈回来自动恢复 → **回页面零重建**。 +- **② App 跨 Activity 控件**:因为 App 页面本身依赖 SDK,跨 Activity UI 也由 **SDK 负责逻辑与渲染**。App 用 `meow_ui_global_*`(如下)声明,SDK 托管(钉在 App 栈之上、切 Activity 仍存在、逻辑/命中统一调度)。例:App 内部底部播放栏(多 Activity 共享)。 +- **③ 系统级控件**:状态栏、通知中心入口、左缘返回/全屏滑条、电源菜单、全局返回手势指示等**全局叠加层**——**只留 SDK 内部接口位,用户侧 App 一律不可调用**(开放成「悬浮窗/全局叠加层」会引入遮挡、冲突、性能与安全风险)。App 这类需求只能走 SDK 标准能力,不得自行叠加全局层。 + +#### 交互分层(命中分流) +触摸命中顺序:**③ 系统全局 → ② App 全局 → ① 当前 Activity 页面控件**;某层命中即消费,否则落到下一层。 + +#### 与 agent-119「即时重绘注册表」的关系 +`g_live_btns[]` 从进程级全局,改为**按 Activity 分区**的控件注册集;非 active Activity 的控件不参与命中。这直接根治 agent-119 遗留的"全屏页触摸到主界面按钮位置 → 短暂闪现 accent 底"(页面控件残留,跨页不复用)。 + +#### API 定案(本轮已在 B1 实现) +```c +/* ① Activity 栈 */ +void meow_ui_activity_push(int id); +void meow_ui_activity_pop(void); +int meow_ui_activity_active(void); /* 当前 active activity id */ + +/* ② App 跨 Activity 控件(SDK 托管) */ +typedef void (*meow_global_render_fn)(void *ctx); /* 每次渲染帧回调(SDK 调用) */ +typedef int (*meow_global_hit_fn)(void *ctx, int x, int y); /* 命中返回1=消费 */ +void meow_ui_global_add(int id, meow_global_render_fn r, meow_global_hit_fn h, void *ctx); +void meow_ui_global_remove(int id); + +/* ③ 系统级控件:仅框架内部,无公共 API(不开放) */ +``` + +#### 实现期定案 / 与上文的偏差(2026-08-30 落地,保持文档实时一致) +- **控件绑定 owner**:`meow_btn_create` 等所有控件(btn/slider/switch/list)创建时即取 `meow_ui_activity_active()` 作为唯一 `owner`(`meow_widget` 新增 `int owner` 字段)。栈空时 `active()` 返回 **0(根/default Activity)**——未显式管理栈的 App 所有控件默认归属根 0。 +- **命中双闸门**:除 `live_btn_hit`(实时按压重绘)外,**公共 `meow_widget_hit` 同样仅限 `owner==active`** 才返回命中(页面控件只对自身 Activity 负责,不跨页复用)。SDK 侧 `meow_widget_touch_refresh` 另加 stale 保护:按压期间若发生 Activity 切换(如点 FULLSCREEN 进全屏),静默清除其按住引用、不绘制,杜绝在新页底上画出旧按钮 accent 残留。 +- **对象复用(非销毁)**:§6.1 的「Activity 内对象池复用」本轮**从简落地**——控件对象不随 pop 销毁,SDK 不维护独立对象池;App 自行持有控件指针(hello 用静态全局),弹栈回来自动恢复命中(零重建)。注册表按**指针去重**(`live_btn_register` 查重),故反复 push/pop 不重复注册、不泄漏。 +- **② 为可用骨架**:SDK 维护全局控件列表(`meow_ui_global.c`),渲染帧 `meow_ui_global_render()` 在 active activity 内容之上、全局状态栏之下调用 render_cb;触摸 TAP 先 `meow_ui_global_hit()`(返回 1=消费),否则落 `on_tap`。无 z 序细分/无按压态管理/无命中区排布(待 B2 细化);同 id `global_add` 幂等。 +- **③ 系统级(状态栏/通知中心/返回滑条/电源菜单)**:未开放任何公共悬浮/叠加层 API,既有状态栏/返回滑条逻辑原样保留。 +``` + --- ## 7. 动画/时间(B1 最小可用) @@ -299,6 +611,8 @@ patch_v2/sdk/ # SDK 源码 ├── meow_ui.h # 对外 API(本文档 §3-§8) ├── meow_ui_gfx.c # 渲染后端(back_buf+present+font) ├── meow_ui_widget.c # 控件 + ├── meow_ui_activity.c # §6.1 ① Activity 栈(控件归属) + ├── meow_ui_global.c # §6.1 ② App 跨 Activity 控件(SDK 托管骨架) ├── meow_ui_img.c # stb_image 解码 ├── meow_ui_input.c # 输入线程+语义事件 ├── meow_ui_theme.c diff --git a/docs/MEOWOS_SPEC_REF.md b/docs/MEOWOS_SPEC_REF.md index 04a7342..dcf67d0 100644 --- a/docs/MEOWOS_SPEC_REF.md +++ b/docs/MEOWOS_SPEC_REF.md @@ -148,6 +148,8 @@ - **全局状态栏**:SDK 内置,默认显示(时钟/电量/WiFi/蓝牙/音量),1s 轻刷,z 最顶;仅 APP 声明全屏/`fullscreen:1` 才隐藏;非全屏 APP 须用 `meow_ui_statusbar_height()` 做 inset `[meow_ui.h §3.1][MIGRATION_AC §3]` - **全屏机制(M2.5x,`app.json fullscreen` 即 app 级 + `route..fullscreen` 即 activity 级)**:launcher 启动 app/切 activity 时据声明**预先设 SDK 全屏**(env `MEOW_FULLSCREEN`)。进入/退出全屏:**状态栏向上收出屏顶、只留一条提示线高度**(非全隐藏),带上收/恢复的**自然过渡动画**。**全屏下保留**:左缘返回手势 + 顶部动态伸缩提示线;顶部下滑仍可展开通知中心,但**顶部热区缩小**(不影响全屏 app)`[源:用户 2026-08-30]`(细化既有「全屏=隐藏状态栏/隐藏返回键」的表述,见 §7 A-13) - 沉浸:`app.json immersive:1` → launcher 写 `/tmp/meowapp_state=1` → 隐藏虚拟返回键,手势归 SDK `[APPS §3.5][GESTURE_BACK §2.4]` +- **横向分页设计模板(M2.5x 预留,见 `MEOW_APP_SDK.md` §5.2)**:主页/子页多页横向滑动复用的设计模板(参照 HibyOS 播放器主页横划进播放页)。与左缘返回/顶部下滑**按起始位置分流**互斥——左缘 ≤热区→**左滑返回**(§5.1);中部左/右滑→**页切换**;顶部下滑→**通知中心**。实现要点:相邻页各预渲染一张快照、切换只 blit 快照 + 跟手平移/吸附(vsync ≤60 帧、零 UI 重算)。**注**:模板 API 为「草案/待定案」,当前未实现 `[源:2026-08-30]` +- **SDK 可复用设计模板清单(M2.5x 预留,见 `MEOW_APP_SDK.md` §5.3)**:把反复出现的界面结构抽象为可复用设计模板——①**分组设置表单** ②**列表+选择** ③**弹窗/对话框** ④**顶/底下拉面板**(A+B 先行,已展开 §5.4-§5.7)+ 媒体播放/沉浸/加载(C)、卡片/导航/列表项(D,随 app/MD3 细化)、拖拽排序/长按菜单/时间轴(E,后置),共 11 项;横向分页另见 §5.2。**所有模板与既有手势约定一致**:左缘返回 + 顶部滑条 + 状态栏收合 + 通知中心热区(本 §5.1/§3.1/A-13)——模板只在内部做命中分流,**不重定义全局手势**;顶部/底部面板与左缘返回/通知中心按起始位置与触达途径分流互斥(快捷设置触达途径为**待定案**)。**注**:A①②/B③④ 模板 API 均为「草案/待定案」,当前未实现 `[源:2026-08-30]` ### 5.2 主题 - **日/夜/自动**:SDK `meow_theme` 内置 `meow_theme_light/dark`;模式键 `display.theme_mode`(SYSTEM_SETTINGS 记为 `manual`/`auto`——**与 SDK 枚举 light/dark/auto 冲突**,见 §A);AUTO 判时段 `[SYSTEM_SETTINGS §1][MEOW_APP_SDK §8]` diff --git a/patch_v2/hello_app/hello b/patch_v2/hello_app/hello index 1ffb0895de640c121c48abeb668aaacdd82d0f85..68eff52fc79e7b259edf69fdda670088cdc3d079 100755 GIT binary patch delta 55971 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 diff --git a/patch_v2/hello_app/hello.c b/patch_v2/hello_app/hello.c index a1ce2cf..bb59181 100644 --- a/patch_v2/hello_app/hello.c +++ b/patch_v2/hello_app/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) diff --git a/patch_v2/meow_launcherd/meow_launcherd b/patch_v2/meow_launcherd/meow_launcherd index 0917e7ccfeb5ea68e5c7dd3aea69f85f52f515a2..3f863fe52b56a69efce1dbadf6ad5ca34e0b7f2b 100755 GIT binary patch delta 99533 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 Tpjwa7oBUf>UZfq>dcFSxqp$?U diff --git a/patch_v2/sdk/build_sdk.sh b/patch_v2/sdk/build_sdk.sh index 6589f06..b0fe874 100755 --- a/patch_v2/sdk/build_sdk.sh +++ b/patch_v2/sdk/build_sdk.sh @@ -10,7 +10,7 @@ AR="${AR:-/usr/bin/ar}" # 系统 GNU ar 即可归档 mipsel ELF 对象(架 rm -f meow_ui.a *.o # -I../meow_launcherd:meow_notify_ipc.c 复用共享协议头 meow_ipc.h(同一份、杜绝两端漂移) -OBJS="meow_ui_gfx meow_ui_log meow_ui_notify meow_notify_ipc meow_ui_img meow_ui_widget meow_ui_input meow_ui_theme meow_ui_ime meow_ui_sys meow_ui_vol stb_image" +OBJS="meow_ui_gfx meow_ui_log meow_ui_notify meow_notify_ipc meow_ui_img meow_ui_widget meow_ui_input meow_ui_theme meow_ui_ime meow_ui_sys meow_ui_vol meow_ui_activity meow_ui_global stb_image" CFLAGS="-Os -static -I$ROOT/patch_v2/meow_launcherd" for f in $OBJS; do echo "== cc $f ==" diff --git a/patch_v2/sdk/meow_ui.h b/patch_v2/sdk/meow_ui.h index e7372c3..04120d9 100644 --- a/patch_v2/sdk/meow_ui.h +++ b/patch_v2/sdk/meow_ui.h @@ -156,6 +156,43 @@ void meow_ui_request_exit(void); /* 请求退出(相当于返回/ * x<=0 时清掉此前画的条(填回背景色)。不发 flush,由调用方 meow_ui_flush_region 上屏。 */ void meow_ui_swipe_hint(int x); +/* ============================================================ */ +/* §6.1 控件生命周期与归属(Activity 栈 + 三层控件模型) [源:2026-08-30] */ +/* ============================================================ */ +/* 根治「跨页面控件残留」:控件命中/绘制必须严格绑定其所属页面,否则会出现 + * "按钮已不可见但仍被触摸命中"(如全屏页触摸到主页按钮位置闪现 accent 底)。 + * + * 三层职责(从 App 到系统,风险从低到高): + * ① 页面控件:归属唯一 owner Activity;命中/实时按压只在「当前 active Activity + * 的控件集」里生效。对象不销毁(同 Activity 内复用),弹栈回来自动恢复 → + * 回页面零重建。 + * ② App 跨 Activity 控件(SDK 托管):钉在 App 的 Activity 栈之上、跨 Activity 常驻, + * 逻辑/渲染由 SDK 调度。本轮为「可用骨架」(见上 API 注释),待 B2 细化。 + * ③ 系统级控件(状态栏/通知中心/返回滑条/电源菜单):仅框架内部,无公共 API(不开放)。 + * + * 触摸命中分流顺序:③ 系统全局 → ② App 全局 → ① 当前 active Activity 页面控件; + * 某层命中即消费,否则落到下一层。 */ + +/* ① Activity 栈。控件创建时绑定「当前 active Activity」为 owner;弹栈回来自动恢复。 + * 栈空时 active() 返回 0(根/default Activity),故未显式管理栈的 App 默认所有控件 + * 归属根 Activity 0。push 新 Activity(进子页/全屏)、pop 回上级(回根)。 */ +void meow_ui_activity_push(int id); +void meow_ui_activity_pop(void); +int meow_ui_activity_active(void); /* 当前 active activity id(栈空=0) */ + +/* ② App 跨 Activity 控件(SDK 托管,骨架)。SDK 维护全局控件列表: + * - 渲染:每帧(有脏区需上屏时,meow_ui_gfx present())在 active activity 内容之上、 + * 全局状态栏之下调用 render_cb(跨 Activity 常驻); + * - 触摸:TAP 先给 global hit_cb(返回 1=消费),否则落到 active activity 页面控件。 + * 逻辑/渲染由 SDK 调度,App 只需声明。注:骨架,待 B2 细化。 */ +typedef void (*meow_global_render_fn)(void *ctx); /* 每次渲染帧回调(SDK 调用) */ +typedef int (*meow_global_hit_fn)(void *ctx, int x, int y); /* 命中返回1=消费 */ +void meow_ui_global_add(int id, meow_global_render_fn r, meow_global_hit_fn h, void *ctx); +void meow_ui_global_remove(int id); + +/* ③ 系统级控件:状态栏/通知中心/左缘返回滑条/电源菜单等全局叠加层——仅 SDK 内部接口, + * 不向用户 App 开放任何公共悬浮/叠加层 API。既有状态栏/返回滑条逻辑(§3.1)不动。 */ + /* ============================================================ */ /* §3.1 全局状态栏 / 全屏(A-0,SDK 系统级组件) */ /* ============================================================ */ diff --git a/patch_v2/sdk/meow_ui_activity.c b/patch_v2/sdk/meow_ui_activity.c new file mode 100644 index 0000000..205d215 --- /dev/null +++ b/patch_v2/sdk/meow_ui_activity.c @@ -0,0 +1,33 @@ +/* + * meow_ui_activity.c — Activity 栈(§6.1 ①)。 + * + * 控件严格归属创建它的 Activity;命中/实时按压只在「当前 active Activity」的控件集里 + * 生效(见 meow_ui_widget.c 的 owner 绑定 + live_btn_hit/meow_widget_hit 过滤)。 + * 栈空时 active() 返回 0(根/default Activity)。 + * + * 依赖:无(纯静态数组 + 无外部符号),宿主/真机均可链入,便于单测。 + * 语义:push = 压栈(新 Activity 成为 active); pop = 弹栈(回上级,栈空则停在根 0)。 + */ +#include "meow_ui.h" + +#define MEOW_ACT_MAX 32 + +static int g_act[MEOW_ACT_MAX]; +static int g_act_n = 0; + +void meow_ui_activity_push(int id) +{ + if (g_act_n >= MEOW_ACT_MAX) + return; /* 栈满:静默钳制(骨架级,不崩) */ + g_act[g_act_n++] = id; +} + +void meow_ui_activity_pop(void) +{ + if (g_act_n > 0) g_act_n--; +} + +int meow_ui_activity_active(void) +{ + return g_act_n > 0 ? g_act[g_act_n - 1] : 0; +} diff --git a/patch_v2/sdk/meow_ui_gfx.c b/patch_v2/sdk/meow_ui_gfx.c index a31e971..a056516 100644 --- a/patch_v2/sdk/meow_ui_gfx.c +++ b/patch_v2/sdk/meow_ui_gfx.c @@ -652,6 +652,10 @@ static void present(void) if (!g_refresh_always_max) { if (g_last_present_ms && now - g_last_present_ms < (unsigned long long)period) return; } + /* §6.1 ②:App 跨 Activity 全局控件(SDK 托管骨架)。在 active activity 内容之上、 + * 全局状态栏之下绘制——跨 Activity 常驻,仅在有帧需上屏(已过帧率门控)时调用。 + * render_cb 内的 meow_ui_* 绘制会自行标脏,随下方 dirty 列表一并上屏。 */ + meow_ui_global_render(); /* 全局状态栏(A-0)+ 上收(collapsed)基座:上屏前把状态栏画进 back_buf 顶部行。 * 展开态=整条(MUI_SBAR_H 行);收合态只占/清「提示线」区域(MUI_SBAR_COLLAPSE_H 行), * app 内容(inset=提示线高)可上移到提示线下缘,无 28px 空条。全屏/隐藏时 active()==0 diff --git a/patch_v2/sdk/meow_ui_global.c b/patch_v2/sdk/meow_ui_global.c new file mode 100644 index 0000000..d91dc20 --- /dev/null +++ b/patch_v2/sdk/meow_ui_global.c @@ -0,0 +1,61 @@ +/* + * meow_ui_global.c — App 跨 Activity 控件(§6.1 ②,SDK 托管骨架)。 + * + * SDK 维护一个全局控件列表(钉在 App 的 Activity 栈之上、跨 Activity 常驻): + * - 渲染:meow_ui_gfx present() 每帧在 active activity 内容之上、全局状态栏之下调 + * meow_ui_global_render()(遍历列表调 render_cb); + * - 触摸:meow_ui_input TAP 分发先给 meow_ui_global_hit(x,y)——命中返回 1=消费, + * 否则落到 active activity 页面控件(①)。 + * + * 骨架(待 B2 细化):无 z 序细分/无按压态管理/无命中区排布——App 的 render/hit 回调 + * 自行决定绘制与命中。跨 Activity 常驻由「列表不随 Activity 栈变化」天然保证。 + */ +#include "meow_ui.h" + +#define MEOW_GLOBAL_MAX 16 + +typedef struct { + int id; + meow_global_render_fn render; + meow_global_hit_fn hit; + void *ctx; +} gentry; + +static gentry g_globals[MEOW_GLOBAL_MAX]; +static int g_global_n = 0; + +void meow_ui_global_add(int id, meow_global_render_fn r, meow_global_hit_fn h, void *ctx) +{ + for (int i = 0; i < g_global_n; i++) + if (g_globals[i].id == id) return; /* 同 id 幂等(重复 add 不新增,骨架) */ + if (g_global_n >= MEOW_GLOBAL_MAX) return; + g_globals[g_global_n].id = id; + g_globals[g_global_n].render = r; + g_globals[g_global_n].hit = h; + g_globals[g_global_n].ctx = ctx; + g_global_n++; +} + +void meow_ui_global_remove(int id) +{ + for (int i = 0; i < g_global_n; i++) { + if (g_globals[i].id == id) { + g_globals[i] = g_globals[--g_global_n]; + return; + } + } +} + +void meow_ui_global_render(void) +{ + for (int i = 0; i < g_global_n; i++) + if (g_globals[i].render) g_globals[i].render(g_globals[i].ctx); +} + +int meow_ui_global_hit(int x, int y) +{ + for (int i = 0; i < g_global_n; i++) + if (g_globals[i].hit && g_globals[i].hit(g_globals[i].ctx, x, y)) + return 1; + return 0; +} diff --git a/patch_v2/sdk/meow_ui_input.c b/patch_v2/sdk/meow_ui_input.c index aa19944..c234ca7 100644 --- a/patch_v2/sdk/meow_ui_input.c +++ b/patch_v2/sdk/meow_ui_input.c @@ -310,6 +310,10 @@ void meow_ui_run(const meow_ui_events *ev) startup_cooldown_until = now_ms() + STARTUP_COOLDOWN_MS; /* M2.22(C):启动窗口丢弃 SWIPE */ while (!g_exit) { + /* agent-119:实时触摸按压/按住/释放 → 即时重绘命中按钮区(不等 app 重绘)。 + * IME 打开时软键盘为覆盖层且拦截触摸,不驱动背后按钮视觉,跳过。 */ + if (!meow_ime_active()) meow_widget_touch_refresh(); + meow_input_ev e; int got = 0; while (meow_input_pop(&e)) { @@ -323,6 +327,9 @@ void meow_ui_run(const meow_ui_events *ev) meow_ui_swipe_hint(-1); meow_ui_flush_region(0, meow_ui_statusbar_height(), meow_ui_width(), 6); if (meow_ime_active() && meow_ime_handle_tap(e.a, e.b)) continue; + /* §6.1 触摸分流:③ 系统全局(IME/状态栏…已在上面消费) → ② App 全局控件 + * (命中返回 1=消费,否则落到 ① active Activity 页面控件)。 */ + if (meow_ui_global_hit(e.a, e.b)) continue; if (g_events_set && g_events.on_tap) g_events.on_tap(e.a, e.b); } else if (e.type == MEOW_EV_KEY) { if (g_events_set && g_events.on_key) g_events.on_key(e.a, e.b); diff --git a/patch_v2/sdk/meow_ui_internal.h b/patch_v2/sdk/meow_ui_internal.h index 7767568..ff151e2 100644 --- a/patch_v2/sdk/meow_ui_internal.h +++ b/patch_v2/sdk/meow_ui_internal.h @@ -64,6 +64,19 @@ unsigned int meow_input_touch_hold_ms(void); /* 按下已持续毫秒 * (把按下时刻回拨),便于测按住态;down=0 复位。设备运行时无调用方。 */ void meow_input_touch_set(int down, int x, int y, unsigned hold_ms); +/* ---- 控件层实时刷新(meow_ui_widget.c)---- + * 每帧由 meow_ui_run 调用(主线程):实时触摸按下/释放/按住达阈值时,重绘命中的按钮区 + * 并局部上屏,让按压/按住/释放视觉即时反映,无需 app 在 on_tick/on_tap 重绘(agent-119)。 + * 仅作用于 SDK 控件按钮(meow_widget_draw 的 W_BTN);app 纯自绘不适用。 */ +void meow_widget_touch_refresh(void); + +/* ---- App 跨 Activity 全局控件(meow_ui_global.c,§6.1 ②骨架)---- + * 渲染帧(meow_ui_gfx present())在 active activity 内容之上、全局状态栏之下调用 + * meow_ui_global_render;触摸 TAP 分发先给 meow_ui_global_hit(命中返回 1=消费, + * 否则落到 active activity 页面控件)。跨 Activity 常驻,由 SDK 调度。 */ +void meow_ui_global_render(void); +int meow_ui_global_hit(int x, int y); + /* ---- IME(meow_ui_ime.c)---- */ /* 当前是否显示软键盘。 */ int meow_ime_active(void); diff --git a/patch_v2/sdk/meow_ui_widget.c b/patch_v2/sdk/meow_ui_widget.c index 58c2f4d..00c8f77 100644 --- a/patch_v2/sdk/meow_ui_widget.c +++ b/patch_v2/sdk/meow_ui_widget.c @@ -11,7 +11,7 @@ enum { W_BTN = 0, W_SLIDER = 1, W_SWITCH = 2, W_LIST = 3 }; -/* 按钮「按住」(长按)判定阈值(ms):超过即进入更强态(更深状态层 + 描边环)。 +/* 按钮「按住」(长按)判定阈值(ms):超过即进入更强态(更深状态层)。 * 视觉区分「短按按下」与「按住」;触发语义不变(on_tap 仍按抬手判定)。 */ #define MEOW_BTN_HOLD_MS 500u @@ -28,6 +28,7 @@ static uint32_t blend_color(uint32_t c, uint32_t o, int t) struct meow_widget { int type; int x, y, w, h; + int owner; /* §6.1 ①:创建时绑定的 Activity;命中只在 owner==active 才生效 */ char label[128]; int pressed; /* 按钮按下视觉态 */ int min, max, val; /* 滑条 */ @@ -37,12 +38,105 @@ struct meow_widget { void *ctx; }; +/* ---- 实时按压即时刷新(agent-119)---- + * 按压/按住视觉由 meow_widget_draw 读实时触摸(meow_input_touch_*)呈现,但 app 只在 + * on_tick(1s)/on_tap 重绘 → 快速点/按住时按压态刷新滞后/漏。此处在 SDK 触摸按下/释放/ + * 按住达阈值时主动重绘命中的按钮区域并局部上屏(不等 app 重绘),即时反映按下变深/ + * 释放恢复,连续快速点击每按都反映。仅针对 SDK 控件按钮(W_BTN);app 纯自绘不适用。 + * 语义不变:on_tap / meow_btn_pressed / meow_widget_hit 零改动;非按钮区域不动。 */ +#define MEOW_LIVE_BTN_MAX 64 +static meow_widget *g_live_btns[MEOW_LIVE_BTN_MAX]; +static int g_live_btn_n = 0; +static meow_widget *g_live_btn = NULL; /* 实时按压中最上层按钮(无 = NULL) */ +static int g_live_prev_hold = 0; /* 该按钮上次渲染是否为按住态 */ + +static void live_btn_register(meow_widget *w) +{ + if (!w || w->type != W_BTN) return; + for (int i = 0; i < g_live_btn_n; i++) + if (g_live_btns[i] == w) return; + if (g_live_btn_n < MEOW_LIVE_BTN_MAX) g_live_btns[g_live_btn_n++] = w; +} + +static void live_btn_unregister(meow_widget *w) +{ + for (int i = 0; i < g_live_btn_n; i++) { + if (g_live_btns[i] == w) { + g_live_btns[i] = g_live_btns[--g_live_btn_n]; + if (g_live_btn == w) g_live_btn = NULL; + return; + } + } + if (g_live_btn == w) g_live_btn = NULL; +} + +/* 命中:返回坐标所在的「当前 active Activity」的最上层按钮(创建序 = 绘制序,最后者在上)。 + * §6.1 ①:仅扫描 owner == 当前 active Activity 的按钮 —— 非 active Activity 的控件 + * 绝不参与命中(根治 agent-119 遗留的「全屏页触摸到主页按钮位置 → 闪现 accent 底」)。 */ +static meow_widget *live_btn_hit(int x, int y) +{ + int active = meow_ui_activity_active(); + meow_widget *r = NULL; + for (int i = 0; i < g_live_btn_n; i++) { + meow_widget *w = g_live_btns[i]; + if (w->owner != active) continue; /* 非 active activity:跳过 */ + if (x >= w->x && x < w->x + w->w && y >= w->y && y < w->y + w->h) + r = w; /* 越后创建越上:保留最后命中 */ + } + return r; +} + +/* 重绘并局部刷新一个按钮区(绘制内部调 meow_gfx_fill_round 已标脏;flush_region 合区+上屏)。 */ +static void live_btn_redraw(meow_widget *w) +{ + if (!w) return; + meow_widget_draw(w); + meow_ui_flush_region(w->x, w->y, w->w, w->h); +} + +/* 由 meow_ui_run 每帧调用(主线程):检测实时触摸状态迁移,即时重绘命中按钮的按压/按住/ + * 释放,不等 app on_tick/on_tap。仅在触摸状态相对上次渲染发生变化时动作(非全屏、省性能)。 */ +void meow_widget_touch_refresh(void) +{ + int active = meow_ui_activity_active(); + /* §6.1 ①:若当前按住按钮已不属于 active activity(按压期间发生了 Activity 切换, + * 例如点 FULLSCREEN 后进入全屏),静默清引用——不绘制、不闪现(否则会在新页面底上 + * 画出旧按钮的 accent 残留)。 */ + if (g_live_btn && g_live_btn->owner != active) { + g_live_btn = NULL; + g_live_prev_hold = 0; + } + int down = meow_input_touch_down(); + meow_widget *hit = down ? live_btn_hit(meow_input_touch_x(), meow_input_touch_y()) : NULL; + int hold = down && hit && meow_input_touch_hold_ms() >= MEOW_BTN_HOLD_MS; + + if (!down) { + /* 释放:把最近按压按钮恢复为常态 */ + if (g_live_btn) { live_btn_redraw(g_live_btn); g_live_btn = NULL; } + g_live_prev_hold = 0; + return; + } + if (hit != g_live_btn) { + /* 按下/滑至新按钮:先恢复旧(若手指滑离),再按压新 */ + if (g_live_btn) live_btn_redraw(g_live_btn); + g_live_btn = hit; + g_live_prev_hold = hold; + if (hit) live_btn_redraw(hit); + } else if (hit && hold != g_live_prev_hold) { + /* 同一按钮按住达阈值:升级到更强态 */ + live_btn_redraw(hit); + g_live_prev_hold = hold; + } +} + meow_widget *meow_btn_create(int x, int y, int w, int h, const char *label) { meow_widget *t = (meow_widget *)calloc(1, sizeof *t); if (!t) return NULL; t->type = W_BTN; t->x = x; t->y = y; t->w = w; t->h = h; + t->owner = meow_ui_activity_active(); /* §6.1 ①:绑定当前 active Activity */ if (label) { strncpy(t->label, label, sizeof t->label - 1); t->label[sizeof t->label - 1] = 0; } + live_btn_register(t); return t; } @@ -51,6 +145,7 @@ meow_widget *meow_slider_create(int x, int y, int w, int min, int max, int val) meow_widget *t = (meow_widget *)calloc(1, sizeof *t); if (!t) return NULL; t->type = W_SLIDER; t->x = x; t->y = y; t->w = w; t->h = 40; + t->owner = meow_ui_activity_active(); t->min = min; t->max = (max > min) ? max : min + 1; t->val = (val < min) ? min : (val > t->max) ? t->max : val; return t; } @@ -60,6 +155,7 @@ meow_widget *meow_switch_create(int x, int y, int on) meow_widget *t = (meow_widget *)calloc(1, sizeof *t); if (!t) return NULL; t->type = W_SWITCH; t->x = x; t->y = y; t->w = 56; t->h = 32; + t->owner = meow_ui_activity_active(); t->on = on ? 1 : 0; return t; } @@ -70,11 +166,17 @@ meow_widget *meow_list_create(int x, int y, int w, int h, int count, meow_widget *t = (meow_widget *)calloc(1, sizeof *t); if (!t) return NULL; t->type = W_LIST; t->x = x; t->y = y; t->w = w; t->h = h; + t->owner = meow_ui_activity_active(); t->count = count; t->src = src; t->ctx = ctx; t->sel = 0; return t; } -void meow_widget_free(meow_widget *w) { if (w) free(w); } +void meow_widget_free(meow_widget *w) +{ + if (!w) return; + live_btn_unregister(w); + free(w); +} static int hit(meow_widget *w, int x, int y) { @@ -82,7 +184,13 @@ static int hit(meow_widget *w, int x, int y) return x >= w->x && x < w->x + w->w && y >= w->y && y < w->y + w->h; } -int meow_widget_hit(meow_widget *w, int x, int y) { return hit(w, x, y); } +int meow_widget_hit(meow_widget *w, int x, int y) +{ + if (!w) return 0; + /* §6.1 ①:页面控件只对自身 Activity 负责,不跨页面复用命中。 */ + if (w->owner != meow_ui_activity_active()) return 0; + return hit(w, x, y); +} int meow_btn_pressed(meow_widget *w) { return w && w->type == W_BTN ? w->pressed : 0; } void meow_slider_set(meow_widget *w, int val) @@ -112,22 +220,16 @@ void meow_widget_draw(meow_widget *w) meow_input_touch_y() >= w->y && meow_input_touch_y() < w->y + w->h; int press = w->pressed || live; int hold = live && meow_input_touch_hold_ms() >= MEOW_BTN_HOLD_MS; - if (hold) { - /* 按住:更强态——更深状态层 + 内缩圆角描边环(浅 accent),贴 MD3 强调; - * 动效取舍:状态层按规范即时切换(MD3 ripple 属额外动画,依赖 on_tick 逐帧, - * 非本「加视觉态」范围),不做 1-2 帧插值。 */ - uint32_t hbg = blend_color(th->accent, 0x000000, 24); - meow_gfx_fill_round(w->x, w->y, w->w, w->h, 10, hbg); - if (w->w > 6 && w->h > 6) - meow_ui_draw_rect_round(w->x + 1, w->y + 1, w->w - 2, w->h - 2, 9, - blend_color(th->accent, 0xFFFFFF, 45)); - } else if (press) { - /* 按下:轻状态层(accent 向黑调 12%,即变深/偏移),释放恢复;MD3 表面按压。 */ - meow_gfx_fill_round(w->x, w->y, w->w, w->h, 10, - blend_color(th->accent, 0x000000, 12)); - } else { - meow_gfx_fill_round(w->x, w->y, w->w, w->h, 10, th->accent); - } + /* 纯色状态层(无描边环、无分层):一层即满,深浅二态均由 accent 向黑调出。 + * 常态=accent、按下=accent+黑12%、按住=accent+黑24%。整体一层不「先底色再套圈」。 */ + uint32_t bg; + if (hold) + bg = blend_color(th->accent, 0x000000, 24); + else if (press) + bg = blend_color(th->accent, 0x000000, 12); + else + bg = th->accent; + meow_gfx_fill_round(w->x, w->y, w->w, w->h, 10, bg); meow_ui_text_center(w->x + w->w / 2, w->y + (w->h - meow_ui_text_height(th->font_body)) / 2, w->label, th->font_body, 0xFFFFFF); break;