Skip to content

feat: improve compact layouts, chart readability, and medication reminders - #29

Closed
YingQiu0871 wants to merge 0 commit into
NaiveTomcat:masterfrom
YingQiu0871:agent/fix-home-responsive-layout
Closed

feat: improve compact layouts, chart readability, and medication reminders#29
YingQiu0871 wants to merge 0 commit into
NaiveTomcat:masterfrom
YingQiu0871:agent/fix-home-responsive-layout

Conversation

@YingQiu0871

@YingQiu0871 YingQiu0871 commented Jul 18, 2026

Copy link
Copy Markdown

概要

本 PR 汇总了一组针对窄屏设备、折叠屏合上模式、图表可读性及用药计划提醒的改进,并保持现有药代模型、用药数据结构与数据库结构不变。

特别适配了折叠屏设备合上后的窄屏显示模式,同时兼顾普通小屏手机和系统大字体场景;新增提醒使用 Android 标准通知组件,并在支持的系统上请求 Android 16 焦点通知(Live Updates / promoted notifications)展示资格。

更新内容

1. 首页窄屏与折叠屏合上模式适配

  • 当前浓度卡片会根据可用宽度和系统字体缩放,在横向与纵向布局间自动切换。
  • 浓度数值支持自适应字号,避免状态文本被挤压成竖向逐字显示。
  • 调整内容宽度与间距,使首页在折叠屏合上模式、窄屏手机和大字体下保持完整可读。

2. 浓度图表响应式布局

  • 根据图表可用宽度动态显示 2–6 个横轴标签。
  • 日期和时间拆分为两行,并约束首尾标签位置,避免横轴文字重叠或越界。
  • 增加 100–200 pg/mL 的非针剂女性向 GAHT 目标浓度阴影,并确保纵轴始终能完整展示该范围。
  • 将贯穿图表的粉色给药竖线改为曲线上的星形标记,减少遮挡。
  • 在“曲线说明”中增加“星形:实际给药记录”图例。

3. 添加用药方案时的弹跳修复

  • 移除“给药途径”选项的宽度弹簧动画。
  • 各选项保持等宽、固定尺寸,仅通过颜色表达选中状态。
  • 避免切换给药途径时文字重新换行及下方表单上下跳动。

4. 设置页选项形状稳定

  • 主题模式、颜色主题和时间制式选项在选中、按下、聚焦等状态下保持相同尺寸和圆角。
  • 选中行为只改变背景色、内容颜色和单选圆点,不再改变方块形状。

5. 用药计划提醒与通知快捷操作

  • 启用的用药方案会在计划时间发送 Android 标准高优先级通知。
  • 通知提供“确认用药”和“跳过本次”两个系统 Action,无需先打开应用。
  • “确认用药”按确认时间写入现有用药记录;记录 ID 由方案和本次计划时间确定,避免重复广播生成重复记录。
  • “跳过本次”只结束当前提醒,不修改方案,也不影响后续提醒。
  • Android 13+ 在启用方案时申请通知权限,并在方案页提供权限恢复入口。
  • Android 16+ 声明 promoted notification 权限并请求焦点通知展示资格;系统不支持、用户未授权或系统判定不符合时,自动保留为普通高优先级通知。
  • 手机重启、应用更新、手动修改时间或时区后自动恢复提醒。
  • 每次提醒触发后续排下一批计划,避免长期方案在预排窗口结束后停止。
  • 编辑方案时先清理旧闹钟,避免旧时间点继续触发。

根因

  • 首页原布局依赖固定横向空间,在折叠屏合上模式、窄屏或大字体下会出现文本挤压。
  • 图表固定绘制完整时间标签,未根据实际画布宽度减少标签数量。
  • Material 3 Expressive 的按钮组和 SegmentedListItem 默认会在交互状态下改变宽度或形状,导致弹跳和轮廓不一致。
  • 给药时间使用贯穿图表的竖线标记,视觉干扰较强。
  • 原提醒仅发送基础通知,没有运行时权限入口、通知 Action、重启恢复和长期续排;启动时还可能从尚未订阅的空 StateFlow 读取方案。

Android 兼容依据

  • 通知快捷操作使用 Android 官方 NotificationCompat.Builder.addAction()BroadcastReceiver 模式。
  • Android 16 焦点通知使用 POST_PROMOTED_NOTIFICATIONSsetRequestPromotedOngoing(true) 和系统授权状态检查;未获得 promoted 资格时由系统自然降级。
  • 未使用自定义 RemoteViews,保留标准通知样式、公开锁屏可见性和高重要性通知渠道。

验证

  • clean testDebugUnitTest lintDebug assembleDebug:完整干净构建通过。
  • testDebugUnitTest:81 项单元测试全部通过。
  • lintDebug:0 个错误。
  • assembleDebug:Debug APK 构建成功。
  • 增加窄屏/大字体预览、横轴标签数量计算测试,以及提醒确认记录的幂等性与字段映射测试。

范围说明

  • 本 PR 不包含校准功能。
  • 不修改现有药代计算逻辑、用药记录格式或数据库结构。
  • “确认用药”复用现有 dose_events 数据结构。
  • 不包含本地临时构建配置。

@YingQiu0871 YingQiu0871 changed the title fix: improve home layout on narrow screens fix: stabilize narrow-screen home and plan layouts Jul 18, 2026
@YingQiu0871 YingQiu0871 changed the title fix: stabilize narrow-screen home and plan layouts fix: improve compact/foldable layouts and chart readability Jul 19, 2026
@YingQiu0871 YingQiu0871 changed the title fix: improve compact/foldable layouts and chart readability feat: improve compact layouts, chart readability, and medication reminders Jul 19, 2026
@YingQiu0871

Copy link
Copy Markdown
Author

已追加提交 1f1bc4b:新增可操作的用药计划提醒。通知使用 Android 标准 Action,提供“确认用药”和“跳过本次”;补充 Android 13+ 通知权限入口、Android 16 promoted/焦点通知请求与降级、重启/更新时间恢复以及长期计划续排。此前的 100–200 pg/mL 目标阴影和曲线星形实际给药标记均继续保留。已通过 clean testDebugUnitTest lintDebug assembleDebug,共 81 项单元测试。

@NaiveTomcat
NaiveTomcat requested a balanced review from Copilot August 13, 2026 08:54

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@NaiveTomcat

Copy link
Copy Markdown
Owner

4. 设置页选项形状稳定

  • 主题模式、颜色主题和时间制式选项在选中、按下、聚焦等状态下保持相同尺寸和圆角。
  • 选中行为只改变背景色、内容颜色和单选圆点,不再改变方块形状。

此为遵循M3E的预期行为

3. 添加用药方案时的弹跳修复

  • 移除“给药途径”选项的宽度弹簧动画。
  • 各选项保持等宽、固定尺寸,仅通过颜色表达选中状态。
  • 避免切换给药途径时文字重新换行及下方表单上下跳动。

此也为遵循M3E的预期行为,但确实实际使用中发现宽度变化容易导致折行,从而导致高度也不稳定。

@YingQiu0871
YingQiu0871 marked this pull request as ready for review August 13, 2026 09:10
@YingQiu0871
YingQiu0871 marked this pull request as draft August 13, 2026 09:10
@YingQiu0871

Copy link
Copy Markdown
Author

已按维护者意见移除原第 3 点(给药途径按钮弹跳修复),恢复 M3E 预期的宽度动画行为。因原 head 仓库的 fork 关系已失效,原 PR 无法重开,全部改动(除第 3 点外)已重新提交为新 PR #31,请继续 review。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants