mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-18 07:09:16 +00:00
feat(tv): 新增错误态(错误色+原因+重试),失败不再只弹吐司留一个空页面
设计文档 §9.9 要求「错误态:错误色 + 原因 + 重试动作」。改动前 TV 端根本没有错误态: 首页内容源加载失败只弹一个会消失的吐司,然后 showContent() 留一个没有任何内容源的 空首页——用户既不知道原因,也没有重试入口;设置页则把 error_config_get 写进普通的 取值 TextView,与正常值颜色完全相同。 根因有两条:状态容器 ProgressLayout 只有 CONTENT/PROGRESS/EMPTY 三态;以及没有 「壁纸上的错误前景色」这个角色——不能直接用 ?attr/colorError,它跟随调色板, 浅色表的深红压在深色壁纸上实测只有 1.23:1(对行色带 1.06:1),等于看不见。 - 新增 webhtv_color_on_wallpaper_error = #FFDAD6,两表同值(壁纸在两种模式下都是深色), 独立 attr 并在 Theme.WebHTV 接线; - ProgressLayout 增加 State.ERROR 与 showError(...):复用空态三槽位,但隐藏插画 (空箱子表达的是「没有内容」,用在错误上会误导)并把标题染成错误色;原因正文刻意 不用错误色(壁纸上的 16sp 正文需要 4.5:1,错误色只够大字号);已在错误态时再次 showError 会重放内容,使「重试又失败」能刷新原因; - view_empty.xml(两个 flavor)给 Lottie 加 @id/illustration 供错误态隐藏,仍用 findViewById + 空值守卫,避免 main 源集依赖 flavor 专属字段; - HomeActivity:配置加载失败进入错误态(标题/原因取服务端 message/重试重新 initConfig), 保留原有吐司; - SettingEnhanceActivity/SettingAdActivity:setError 改用错误角色,并新增 setSummary 在写 摘要时复位到常规壁纸前景色——这些摘要复用同一个 TextView,不复位的话某行失败一次后 会一直是红的; - 三语字符串 error_config_load / error_retry;ThemeContractTest 冻结计数 54 -> 55。 如实记录一个缺口:按实机取样核算(壁纸 L=0.1217-0.2019,行色带 L=0.1157-0.1506), #FFDAD6 稳定满足的是大字号门槛 3:1(最差 3.23:1),用于正文时是 4.05-4.50:1, 略低于 4.5:1。这是底材决定的取舍:中亮度壁纸上带红相的前景色要达到 4.5:1 必须接近 纯白,那时错误色与普通白字观感无异、失去语义。契约测试把正文下限钉在 4.0 而不是 4.5, 写 4.5 会是假断言;修法(改底材而非调色)见任务文档 §7.1。 验证:leanback 定向测试 BUILD SUCCESSFUL(含新增 TvErrorStateContractTest 8 项); 手机端编译 BUILD SUCCESSFUL;真机 192.168.50.3:5561 上用 iptables 临时拒绝配置主机 制造真实失败,错误态正确显示错误色标题+原因+重试、插画已隐藏;移除规则后按重试, 首页完整恢复(规则已确认移除,REJECT 计数为 0)。 环境限制:本会话无可用 bash,check_ui_tokens.sh 与 task_guard.sh 无法执行, 按同等意图手工暂存/提交/打 tag;详见 docs/TV-ERROR-STATE-20261012.md。
This commit is contained in:
parent
d90c547383
commit
f838870134
16 changed files with 592 additions and 18 deletions
Loading…
Add table
Add a link
Reference in a new issue