mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-18 07:09:16 +00:00
refactor(tv): 焦点缩放收敛为单一实现与单一时长,并清除重复的 focusScale 声明
改动前同一个焦点缩放在 TV 端有四种写法:最近观看/收藏/历史 1.1f/150ms,TMDB 相关
视频与详情页视频卡 1.04f/120ms,网络诊断面板 1.035f/100ms,另有两处刻意不缩放。
没有任何记录说明为什么不同,用户学到的是「聚焦有时放大、有时不放大、幅度还不一样」。
同时 values{,-night}/webhtv_tokens.xml 各声明了一个 webhtv_focus_scale dimen,
而全仓库没有任何代码读取它——同一语义两份声明、零个原生消费点。
收敛过程中查到一条反证:TmdbDetailActivityLayoutTest 记录 TmdbEpisodeAdapter 刻意
完全不缩放,理由是「detail rows clip enlarged cards」。说明密集宿主的小倍率是为了
避免裁切,不是随意漂移;把 1.04 一律提到 1.1 会引入真实的裁切回归。因此保留两个档位:
- 新增 TvFocusScale:apply() 走主题倍率、applyCompact() 走紧凑倍率、reset() 供复用清理,
时长统一取 @integer/webhtv_focus_scale_duration=150ms;
- HistoryAdapter/KeepAdapter 用 apply;TmdbVideoPresenter/TmdbVideoAdapter/
PanNetworkDiagnosticDialog 用 applyCompact;五站点直接 .scaleX( 计数归零;
- ThemeTokens.light().focusScale() 由 1.0f 改为 1.1f:缩放是动效属性而非配色属性,
且各站点此前一律写死 1.1,浅色表保持 1.0 会让浅色主题电视改走 token 后丢掉缩放反馈;
- 删除与 ThemeTokens.focusScale() 重复的死 dimen,新增时长 integer token;
- 新增 TvFocusScaleContractTest 7 项,把「档位归属」与「哪些缩放不是焦点缩放」
变成可执行约束(后者含拖拽/画面手势站点不得引用本助手)。
验证:leanback 定向测试 BUILD SUCCESSFUL(3m49s,含新增 7 项);mobile 定向测试
含 TmdbDetailActivityLayoutTest BUILD SUCCESSFUL(8m44s);真机 192.168.50.3:5561
首页与历史页聚焦均正常放大,无崩溃。
诚实说明:常规档本就是 1.1/150ms,行为不变;用户可见变化仅时长统一(±30-50ms)。
本任务的主要价值是实现与来源的收敛,详见 docs/TV-FOCUS-SCALE-20261012.md。
This commit is contained in:
parent
e7371abcb4
commit
9f672ce2b2
12 changed files with 410 additions and 30 deletions
Loading…
Add table
Add a link
Reference in a new issue