Files
stc32g128k/Docs/40_ui-design/main.md
2026-07-15 15:57:37 +08:00

8.3 KiB
Raw Permalink Blame History

UI 设计 (Docs/40_ui-design/main.md)

本章节定义手环 120x240 Truly AMOLED 屏幕的画面布局、各页面坐标位置、中文字体/ASCII 字符对齐基线以及局部刷新逻辑。 针对特殊人群(如视力障碍者、老年人)的需求,本界面采取了大字版与大图标无障碍Accessibility / A11y设计系统


1. 无障碍A11y大字设计系统规范

为确保特殊人群能清晰阅读,且文本在 120 像素宽的屏幕内不超出边界,设计遵循以下准则:

  1. 文本宽度与换行原则
    • 在 120 像素宽的屏幕上,单行 16x32px 大字符最多显示 7 个字符
    • 如果提示语较长(如 APPEL EN COURS),必须将其缩短或分成多行显示(如第一行 APPEL,第二行 SOS)。
    • 菜单项名称进行合理缩短,如 1. DATE/HEURE 缩短为 1. HORLOGE2. APPAIRAGE 缩短为 2. APPAIR.,以保证在 16x32px 字体下不溢出。
  2. 最小字号限制:取消所有 8x16px 或更小的微缩文本。基础信息字号不小于 16x32px
  3. 核心电量与状态图标放大
    • 为了使用户能清晰看清剩余电量,电池电量数字放大为 16x32px 粗体。
    • 电池图标放大为 24x12px 粗边框,放置在状态栏右上角。
    • 状态锁图标放大为 32x32px,放置在状态栏左上角。
  4. 超大核心数据:时间数字、设定参数、传感器序号等使用 32x64px(超大点阵字模)呈现。
  5. 大图标辅助:所有页面均配备 48x48px 或 64x64px 的超大单色位图图标,结合高对比度色彩(红/绿/黄/黑),方便用户一眼识别功能。
  6. 单页单焦点排版:避免多行数据堆叠。菜单、时间设定、对码等页面在屏幕中每次只显示当前编辑或选中的一个条目,把所有的屏幕空间留给最大化的字体和图标。
  7. 坐标偏移修正 Truly AMOLED 屏幕写屏窗口渲染必须应用 X 轴偏移量 +4Y 轴偏移量 +0。即:LCD_SetWindow(x1 + 4, x2 + 4, y1, y2)

2. 页面布局与坐标坐标规范

2.1 时钟待机界面 (STATE_CLOCK)

时钟页面作为常态显示,包括状态栏、数字时钟和日期行。

+-----------------------------------------+
|  [🔒 32x32]                     🔋 85%+ | <- 状态栏 (Y=15~35) (电池图标与16x32px电量)
|                                         |
|                                         |
|                 10:35                   | <- 居中超大时间 (Y=70~134) (32x64px字模)
|                                         |
|                                         |
|              VEN. 07-10                 | <- 底部大日期 (Y=180~212) (16x32px字模)
|                                         |
+-----------------------------------------+
  • 状态栏电量显示(极重要)
    • 电池图标 放大绘制在 X=86, Y=19, W=24, H=13
    • 电量百分比 采用 16x32px 字模,右对齐。充电时显示 + 号。
  • 安防状态显示
    • 状态栏左侧绘制 32x32px 的超大布撤防锁图标:红色闭锁 🔒(布防),绿色开锁 🔓(撤防),不再显示小文字,使用户看图即懂。

2.2 主选择菜单页面 (STATE_MENU)

由时钟待机长按 CONFIRM 键 3 秒进入。显示四个功能条目,供滚动选择:

+-----------------------------------------+
|                 - MENU -                | <- 标题 (Y=20) (16x32px)
|                                         |
|                [⏰ 48x48]               | <- 选中项大图标 (Y=60~108)
|                                         |
|              1. HORLOGE                 | <- 选中项大字文本 (Y=150~182) (16x32px)
|                                         |
|                  ▲ / ▼                  | <- 翻页提示符 (Y=205) (16x32px)
+-----------------------------------------+
  • 屏幕中央显示当前选中功能的 48x48px 图标,下方以 16x32px 粗体显示功能名称。
  • 用户按 ▲ 或 ▼ 键时,页面以幻灯片形式切换:
    1. 1. HORLOGE (对应 时钟图标)
    2. 2. APPAIR. (对应 📡 雷达对码图标)
    3. 3. ALARME (对应 🔒 防区盾牌图标)
    4. 4. LIAISON (对应 📷 摄像头图标)
  • 短按 CONFIRM 键确认进入当前显示的功能。

2.3 功能设定与子界面设计

2.3.1 时间日期修改界面 (STATE_SET_TIME)

为了避免小字,时间设置每次只微调一个数值:

  • 页面指示:顶部大字显示当前修改的字段,例如 REGLER (16x32px)。
  • 中央数值:正中央显示正在修改的两位数值(如小时 10),字号采用 32x64px 超大号。数值上下有明显的闪烁三角箭头指示。
  • 交互:按 ▲ / ▼ 调整该值。短按 CONFIRM 保存该值并切入下一项(分 $ ightarrow$ 秒 $ ightarrow$ 年 $ ightarrow$ 月 $ ightarrow$ 日)。
  • 顶部标题:显示 APPAIRAGE (16x32px)。
  • 中央图案绘制占满屏幕中部的雷达搜索大图标64x64px并闪烁。

2.3.3 对码确认与序号微调界面 (STATE_PAIR_CONFIRM)

当手环解码到传感器对码信号后,系统自动依据 4-bit 数据码解析出传感器类型,直接切入此确认页进行序号编辑:

+-----------------------------------------+
|                 ✓ RECU                  | <- 状态提示 (Y=20) (16x32px)
|                                         |
|               [🚪 48x48]                | <- 传感器大图标 (Y=55~103)
|                                         |
|                 PORTE                   | <- 类型名称 (Y=120) (16x32px)
|                                         |
|                [  01  ]                 | <- 序号微调框 (Y=170~234) (32x64px)
+-----------------------------------------+
  • 元素布局
    • 传感器图标 使用 48x48px 超大单色位图。
    • 类型前缀 使用 16x32px
    • 数字序号选框 使用 32x64px 超大数字。用户按 ▲/▼ 直接微调序号CONFIRM 键保存。

2.3.4 系统布撤防手动选择界面 (STATE_ARM_DISARM_SELECT)

  • 页面显示:屏幕正中央显示当前拟设定的状态:
    • [ ARME ](配 48x48px 盾牌图标)
    • [ DESARME ](配 48x48px 虚线开锁图标)
    • 字体全部使用 16x32px。按 ▲/▼ 键来回切换,按 CONFIRM 键保存生效。

2.3.5 IPC 绑定发射界面 (STATE_IPC_BIND)

  • 图形指示:正中央显示 48x48px 的摄像头绑定大图标,配合动态声波向外发射动画。
  • 大字提示:上方显示 LIAISON (16x32px),下方显示 EN COURS (16x32px)。
  • 物理地址展示:底部以 8x16px 显示手环地址 ID: 0xXXXXX
  • 退出/返回:长按 CONFIRM 键 3 秒 或 长按 ▼ 键 2 秒主动退出。

2.4 报警触发与本地 SOS 界面 (STATE_ALARMING / STATE_SOS_EMITTED)

手环发生报警时的显示要具有极强的视觉冲击力:

  • 警告框:全屏外围红绿交替闪烁的 4 像素宽粗线警告框。
  • 中央图标:根据传感器类型,居中绘制对应的 64x64px 的超大单色位图图标(如巨大的火苗 🔥、门锁 🚪)。
  • 主动 SOS 界面:大字显示 SOSEMIS (16x32px 分行显示,防止单行溢出),中央显示巨大的 🚨 警灯图标 (64x64px)。

3. 文字居中对齐与字模基线规范

为保证排版美观,Drivers/lcd_font.h 内的标准字模点阵需要满足如下基线对齐:

  • 水平居中公式
    • 对于大字符16px宽X 轴绘制起点为 (120 - len * 16) / 2
    • 对于超大字符24px或32px宽X 轴绘制起点为 (120 - len * 32) / 2
  • 百分号(%)符号基线修正:百分号字符在 lcd_font.h 数组的索引 0x25 中,点阵数据需向上平移 2 像素,以和 0~9 数字的基线保持严格水平对齐,避免百分号整体下沉。