F7.06.2Cover must not outlast latency设计研究

掩盖不能超过实际延迟

别名: 掩盖过长 · 转场长于往返 · 多余等待

概念解释

数据 80 毫秒就到了,转场还要再播 400 毫秒,多出来的那截不是掩盖,是新造的等待。掩盖的上限是真实延迟的长度。超过上限,运动从「占用空窗」变成「挡住已就绪的界面」。

机制

并行加载的本意是让最慢的那一段决定用户等到何时。转场若比网络和解码都长,最慢段就变成动画时钟。内容已经在内存里,命中区却要等缓动结束才开放,因果被倒过来:人在等一条已经完成的路径播完。

主观上这比空白更糟。空白至少被归因于网络;超时的转场被归因于界面自己在表演。填充时距效应在这里帮不上忙——物理间隔被主动加长了,估得再短也是在一个被拉长的底数上。

怎么研究

把真实延迟设成短、中、长三档,转场时长固定,画「可交互时刻」相对「数据就绪时刻」的差。差值为正且随转场变长,就是掩盖越界。因变量还可包括:就绪后仍不可点的投诉、提前点击被吞的次数。

必须在数据实际就绪时打点,不能只用动画结束事件,否则永远看不出越界。

边界

  • 转场另有身份或层级工作要做,可以略长于这次往返,但多长出的部分要从空间功能记账,不能记在「掩盖」名下。
  • 延迟抖动大时,按均值设转场会在快的那些次越界。应按低分位延迟来,宁可偶尔露出短加载,也不要每次都演完。
  • 这条不处理「完全没有延迟却播动画」——那是造假,不是掩盖超时。

怎么落地

  • 以数据就绪为结束条件:转场可以早于就绪(后面接进度),不可以晚于就绪还锁住界面。
  • 就绪后允许跳过剩余缓动,直接落到终态。
  • 验证:在本地缓存命中(近乎零延迟)下走同一过渡。若仍要等完整时长才能点,掩盖已经越界。

延伸

  • 同组F7.06.1 动效可填充加载间隙 · F7.06.3 用动效制造的假延迟是净损失
  • 相邻F7.02.2 过长的动效阻碍连续操作 · I1.05 延迟抖动
  • 站内检索latency masking · animation outlasting load · time to interactive

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/F7.06.2