0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-18 07:09:16 +00:00

feat(mobile): 手机端空态补齐三件套、加载指示器语义化,收藏页删空不再留空白

手机端与电视端同款问题,只是晚了一批处理。设计文档 §9.9 要求空态是「标题 + 解释 +
一个主动作」并明确「不能只显示一句暂无数据」,§6.2 又把空态列入 Display 档
(手机 32-40sp);而手机端 view_empty.xml 只有一句 16sp 的 error_empty,
解释与动作两个槽位(TV-4 为编译所需补的)默认 GONE 且没有任何宿主接入。

根因:手机端从未按这两条规格实现状态层,ProgressLayout 提供的 setEmptyContent /
showError 两个接口在手机端一个都没被调用过。

- view_empty.xml:标题 16sp -> 32sp(手机 Display 档);主动作由裸 TextView 改为
  MaterialButton + Widget.WebHTV.Button.Tonal;
- view_progress.xml:indicatorColor 由 @color/white 改为 ?attr/webhtvColorOnWallpaper;
- KeepActivity:接入三件套(还没有收藏 / 在任意详情页按收藏… / 去点播);
  onItemDelete 补 showContent(true, count),修掉与电视端同款的「删空不驱动状态机」缺陷;
  loadConfig 失败进入错误态(原因取服务端 message,重试复用同一条路径),保留原吐司;
- 新增 testMobile 的 MobileStateSurfaceContractTest 8 项,与电视端契约同构。

实机验证时发现并修掉一个缺陷:主动作原本只是一个带 clickable 的 TextView,
渲染出来与旁边的解释文字没有区别、看不出可以点(手机是触摸交互,没有容器就没有
可点的暗示)。改用应用自己的语义按钮样式后是一枚浅色胶囊。

验证:testMobile 定向测试 BUILD SUCCESSFUL(新增 8 项全绿);既有手机端 theme 与
activity 测试 BUILD SUCCESSFUL;assembleMobileArm64_v8aDebug BUILD SUCCESSFUL;
在 5561 上装 mobile flavor 实测空态渲染与接线安全(无崩溃),随后已把电视端 flavor 装回。

诚实说明:本会话没有手机形态的设备(5561 是电视形态模拟器,5557 是用户真机不可用),
因此 32sp 标题与 320dp 解释换行宽度在真实手机上的观感没有实测;删除路径与错误态走的是
电视端已端到端验证过的同一套 ProgressLayout,本批只新增调用点,由契约测试覆盖。
详见 docs/MOBILE-STATE-SURFACE-20261013.md §6.5。

环境限制:本会话无可用 bash,check_ui_tokens.sh 与 task_guard.sh 无法执行,
按同等意图手工暂存/提交/打 tag。
This commit is contained in:
Silent1566 2026-10-13 10:18:54 +08:00
commit 46f0d5560d
5 changed files with 358 additions and 17 deletions