3、视觉反馈设计:点击态、加载态、选中态、禁用态的视觉规范,以及动效曲线(缓入缓出)在车机中的应用
各位好,我是老张。今天咱们聊聊车机触摸反馈里最“看得见”的部分——视觉反馈。
你想想看,用户戳了一下屏幕,如果界面啥反应没有,他第一反应肯定是“我按到了吗?”然后就会再戳一下。这在开车时是致命的。所以,视觉反馈不是装饰,是安全件。
核心原则:车机上的每一次触摸,都必须在 100ms 内给出视觉回应。这是硬指标,不是建议。
3.1 四大视觉状态:点击、加载、选中、禁用
我把车机里最常见的状态归纳为四类。每个状态都有明确的视觉规范,不能混用。
| 状态 | 触发时机 | 视觉表现 | 持续时间 |
|---|---|---|---|
| 点击态 | 手指按下瞬间 | 背景色加深 + 缩放 0.95 | 按下即显,抬手即消 |
| 加载态 | 操作后等待响应 | 转圈/进度条 + 按钮置灰 | 直到响应返回 |
| 选中态 | 选项被激活 | 高亮边框 + 图标填充 | 持续到取消选中 |
| 禁用态 | 功能不可用 | 透明度 40% + 无点击反馈 | 持续到条件满足 |
3.2 点击态:别让用户怀疑人生
点击态是用户最直接的“确认感”来源。我见过不少项目,点击态就改个颜色,结果在强光下根本看不清。
我的规范建议:
- 背景变化:在基础色上叠加 15%-20% 的黑色或白色遮罩。别用纯色替换,那样会闪。
- 缩放反馈:按钮整体缩小到 95%。这个比例刚好,太小了会感觉按钮“陷进去”了。
- 触感联动:点击态最好配合振动马达。视觉+触觉,双重确认。
小技巧:点击态的动画时长控制在 50-80ms。太短没感觉,太长显得拖沓。我习惯用 60ms,刚刚好。
3.3 加载态:别让用户干等
加载态是车机里最容易翻车的地方。为什么?因为车机的网络和算力都不如手机稳定。
我曾经遇到一个项目,地图搜索按钮点了之后,转圈转了 5 秒才出结果。用户以为死机了,直接重启车机。
加载态的三个层级:
- 瞬时加载(<1s):按钮内嵌小转圈,不阻塞界面。
- 短时加载(1-3s):全屏遮罩 + 进度条,显示百分比。
- 长时加载(>3s):必须给出“后台运行”提示,允许用户返回。
注意:加载态不能取消用户的点击操作。也就是说,按钮点了之后要立刻变成加载态,并且禁止重复点击。否则用户会疯狂点,然后你的后台就炸了。
3.4 选中态:清晰区分,一目了然
选中态常见于列表、选项卡、开关按钮。核心要求是:未选中和选中的对比度必须足够大。
我见过最坑的设计:选中态和未选中态只差 5% 的透明度。在阳光下根本分不清。
我的标准:
- 列表选中:左侧加 4px 彩色竖条 + 背景色变化。
- 选项卡选中:底部加 3px 下划线 + 文字加粗。
- 开关按钮:滑块滑动 + 背景色从灰变绿/蓝。
3.5 禁用态:灰色不是唯一选择
禁用态最容易偷懒。很多设计师直接给个灰色,然后就不管了。但灰色在车机里有个问题——强光下看不清。
我建议的做法:
- 降低透明度:整体透明度降到 40%,保留原有色彩倾向。
- 去掉交互反馈:禁用态不能有点击态、不能有涟漪效果。
- 加提示文案:长按禁用按钮时,弹出 Toast 说明原因。比如“请先连接蓝牙”。
3.6 动效曲线:缓入缓出才是车机该有的样子
动效曲线决定了动画的“质感”。车机里最常用的就是 缓入缓出(ease-in-out)。
为什么不用线性?线性动画像机器人,生硬。缓入缓出模拟了物理世界的运动——起步慢、中间快、结束慢。
车机动效曲线参数:
| 场景 | 曲线类型 | 贝塞尔参数 | 时长 |
|---|---|---|---|
| 按钮点击缩放 | 缓出 | cubic-bezier(0.0, 0.0, 0.2, 1.0) | 100ms |
| 页面切换 | 缓入缓出 | cubic-bezier(0.4, 0.0, 0.2, 1.0) | 300ms |
| 弹窗出现 | 缓入 | cubic-bezier(0.4, 0.0, 1.0, 1.0) | 200ms |
| 列表滚动 | 缓出 | cubic-bezier(0.0, 0.0, 0.2, 1.0) | 惯性滚动 |
核心公式:车机动效时长不要超过 400ms。超过这个值,用户就会觉得“卡”。我一般把页面切换控制在 250-300ms,按钮反馈控制在 80-120ms。
3.7 知识结构图:视觉反馈设计全景
下面这张图把本章的核心知识点串起来了。你可以把它当作设计时的检查清单。
3.8 实战避坑指南
最后,分享几个我踩过的坑,你们直接拿去用。
坑1:点击态和选中态混淆
我曾经在一个项目中,点击态和选中态用了同一个颜色。结果用户点了一个按钮,以为它被选中了,但实际上只是按了一下。后来我强制规定:点击态用遮罩,选中态用边框+图标变化,两者绝不共用同一套视觉语言。
坑2:加载态没有超时处理
有一次,车机的网络模块挂了,加载转圈转了 30 秒。用户以为死机了,直接长按电源键重启。从那以后,我所有加载态都加了 5 秒超时,超时后自动弹出“网络异常,请稍后重试”的提示。
坑3:动效曲线用错了地方
缓入缓出不是万能的。按钮反馈用缓出就够了,不需要缓入。如果按钮缩放用了缓入缓出,你会感觉按钮“犹豫”了一下才缩回去。嗯,这个细节很多人注意不到,但用户能感觉到。