4.6 KiB
4.6 KiB
app-android 大字模式排版与触达重构设计
日期:2026-03-06
范围:app-android(仅客户端 UI 层)
状态:已完成设计评审(分节确认通过)
1. 背景与问题
当前大字模式主要放大字号,但没有同步优化字体家族、字重、行高、字间距和点击区域,导致:
- 聊天气泡、章节正文、按钮文案在大字模式下出现拥挤、跳行不自然
- 高频页面(聊天、阅读、设置)视觉节奏不一致
- 可读性和可触达性没有形成统一设计系统
2. 目标与非目标
2.1 目标
- 大字模式达到“稳、清晰、易读”
- 在聊天页、阅读页、设置页实现一致排版体验
- 以设计令牌(token)统一字体与触达尺寸,并推广到全 app(方案 C)
- 与现有业务逻辑完全解耦,不改 API、不改数据模型
2.2 非目标
- 不改后端接口与协议
- 不做业务流程重构
- 不引入外部字体文件,字体家族采用系统无衬线
3. 方案决策
用户确认采用 方案 C(全局重构):
- 不仅修复三类高频页面,还将文本与触达规则推广到全 app UI
- 通过主题注入统一 token,逐步清理硬编码
sp/固定小点击区
4. 设计架构
flowchart LR
settingsSwitch["ProfileSettingSwitch"] --> appSettingsState["AppSettings.largeFontModeState"]
appSettingsState --> lifeechoTheme["LifeechoTheme"]
lifeechoTheme --> typographyTokens["LocalTypographyTokens"]
lifeechoTheme --> touchTokens["LocalTouchTargetTokens"]
typographyTokens --> uiComponents["AllUIComponents"]
touchTokens --> uiComponents
4.1 Typography 令牌层
维护两套语义化排版令牌:
TypographyNormalTypographyLarge
每个文本令牌至少包含:
fontFamily:系统无衬线fontSizelineHeight(大字模式行高比保持 1.45~1.65)fontWeight(正文不低于 500)letterSpacing(微调,避免拥挤)
语义分组建议:
heading/title/body/captionbutton/bubble/reading/tab
4.2 Touch Target 令牌层
维护两套触达尺寸令牌:
TouchTargetNormalTouchTargetLarge
覆盖最小可触达规则:
- 按钮高度
- 列表项最小高度
- IconButton 点击区
- 输入框与语音按钮最小高度
大字模式建议最小触达范围:52~56dp。
4.3 主题统一注入
在 LifeechoTheme 内根据 AppSettings.largeFontModeState 统一注入:
LocalTypographyTokensLocalTouchTargetTokens
组件只读 token,不直接写死 sp/dp。
5. 迁移范围与顺序(全局)
5.1 第一层:主题与公共组件
ui/theme/Dimensions.ktui/theme/Theme.ktui/components/common/*(SectionCard、SettingItem、AppScaffold、MarkdownText)
5.2 第二层:高频页面相关组件
- 聊天:
ui/components/chat/* - 阅读:
ui/components/memoir/* - 设置:
ui/screens/ProfileScreen.kt
5.3 第三层:全屏幕收敛
ui/screens/*全量扫描- 清理硬编码
sp、过小点击区域、局部样式漂移 - 统一到语义 token
6. 关键规范
6.1 文本规范
- 正文字重下限:500
- 标题/按钮可使用 600
- 大字模式行高比:1.45~1.65
- 列表标题保留
maxLines + ellipsis - 正文优先自然换行,避免过度截断
6.2 触达规范
- 所有主要交互控件使用 touch token 约束最小尺寸
- 对聊天输入区、语音按钮、设置项行高进行一致化处理
6.3 Markdown 一致性
MarkdownText由 typography token 推导正文/段落/引用/代码样式- 保证 markdown 正文与普通
Text的阅读节奏一致
7. 风险与回退
7.1 风险
- 全局改造范围大,易出现局部回归
- 历史硬编码样式分散,迁移遗漏风险高
7.2 缓解
- 按“公共组件 -> 高频页面 -> 全量页面”分批推进
- 每批保持可独立回退
- 业务逻辑与样式改造分离,降低故障影响面
8. 验收与测试(DoD 对齐)
8.1 页面回归(普通/大字双模式)
- 聊天页:消息气泡、输入框、语音按钮、时间分隔
- 阅读页:目录、章节标题、正文、引用、浮动按钮
- 设置页:分组标题、设置项、开关、关键按钮
8.2 交互验收
- 任务:3 分钟内完成“阅读章节 + 发送消息”
- 目标:5 位测试用户无阅读障碍反馈
8.3 通过标准
- 大字模式下无明显截断/重叠/异常跳行
- 三类高频页面视觉节奏一致
- 关键交互均满足最小可触达尺寸规则
9. 后续
本设计已确认,可进入实现计划阶段(拆解为可执行任务与验证步骤)。