本文档介绍了 Android 设备上的触感反馈原理,涵盖了使用情形、触感效果分类(清晰、丰富和嗡嗡声)以及面向应用开发者的基本设计指南。keywords_public: > 触感反馈、振动、反馈、Android、界面、用户体验、设计、原则、指南、HapticFeedbackConstants
对于移动设备上的触感反馈,越少越好。过多的振动可能会令人烦恼,甚至会使手部麻木,因为设备通常拿在用户手中,用户会全神贯注地使用设备。它还可能会分散用户对预期任务的注意力,从而导致用户快速关闭所有触感反馈。不过,精心设计的触感反馈可提供有价值的感官反馈,让用户与设备的互动更加丰富。
本页介绍了触感反馈的使用场景,并介绍了触感效果的分类,还介绍了应用的基本准则。
向应用添加触感反馈的应用场景
以下是应用中加入触感的几个原因。
向用户通知需要他们注意的事件。例如,来电或短信,或者日历中即将进行的会议。
确认设备在用户操作后发生的状态变化。 例如,按下按钮时的点击反馈、解锁手机、接受或拒绝指纹,或启动相机。
通过特效让用户感到惊喜。此类效果可以增强正在进行的用户操作或模拟物理互动。例如,滚动反馈、滑块卡入到位,或与动画、声音、视频和游戏同步的触感效果。
触感反馈分类
此处介绍的触感反馈原则围绕清晰触感反馈、丰富触感反馈和蜂鸣触感反馈设计。
清晰触感反馈
清晰触感是指与离散事件(例如按钮按压)相关的清晰明快的触感。这些效果通常旨在模仿相应的真实机械动作,例如按下实体按钮时的感觉。
Android 在 VibrationEffect 中预定义了清晰的触感反馈效果。不过,一般来说,应用应使用 HapticFeedbackConstants 中的面向操作的常量,以确保设备上效果和操作的一致性。
面向操作的常量还有另一个优势,那就是如果用户的设备不支持更复杂的效果,平台可以提供回退行为。
随着触感反馈应用场景的不断扩展,可用的清晰触感有时会显得单调乏味。在这种情况下,请尝试使用更具表现力的丰富触感。
丰富触感反馈
丰富的触感反馈通常需要具有更宽频率带宽的触感反馈致动器,从而实现更强的表现力和范围。通过以不同的振幅和间隔对清晰触感基元进行排序,还可以产生丰富的触感。
丰富的触感反馈效果示例:
- 一种“颤动”的感觉,类似于蝴蝶在指尖上扇动翅膀
- 手指在表面上拖动或滑动时感觉到的表面纹理
- 摇晃和不稳感,或沉重感和回响感
蜂鸣触感反馈
振动感强烈的触感反馈的特点是振动嘈杂、尖锐且穿透力强,即使振动结束,也会留下刺痛感等后效。此外,它还往往会产生铃声效应,感觉像是在振动完全停止之前出现回响。
以下是嗡嗡触感的示例:
- 操作手提式凿岩机
- 骑摩托车
- 在移动设备中,按键后出现冗长、响亮的振动
早在寻呼机和非智能手机时代,配备低性能触感致动器或驱动器的低端手机往往会产生嗡嗡作响的长振动,用于通知目的。
触感反馈设计指南
从宏观层面来看,设计指南可总结为:
- 优先使用丰富且清晰的触感反馈,而不是嗡嗡作响的触感反馈。
- 保持一致性,包括系统和应用设计。
- 注意使用频率和重要性。
优先处理预定义的触感反馈常量和效果
如果您的操作属于 HapticFeedbackConstants 中预定义的某项操作,请使用该常量。这可确保用户互动体验的一致性,对于无障碍功能而言,这一点尤为重要。
如果您要创建自己的效果,请考虑使用 VibrationEffect 预定义效果和 VibrationEffect.Composition 原语。它们更有可能在支持它们的设备上提供一致的优质体验。
将事件重要性和频次与强度相关联
触感反馈效果不应让用户感到不知所措或显得多余。
应用于滚动或移动文本手柄等非常频繁的事件的触感效果应非常细微,以提供令人愉悦的整体体验。
例如,刷新网页或提交表单等更重要的事件应比更改切换开关或在列表中滚动更强。
将这两个概念结合起来,可创建随着互动达到目标而逐渐增强的效果,例如通过拖动、放置或贴靠操作逐渐增加一系列振动的幅度。
保持稳定
在应用内保持触感反馈的一致性。如果特定互动(例如提交表单或应用内导航)具有触感反馈,请确保将相同效果应用于所有类似互动。这有助于用户将特定触感反馈与某种含义相关联。
此外,还应与 Android 系统保持一致,针对明确定义的互动(例如时间选择器或虚拟键盘)使用相同的 HapticFeedbackConstants。
利用触感反馈设计视觉和音频体验
将触感反馈视为整体用户体验的一部分。
我们强烈建议共同设计视觉、音频和触感效果。使其与视觉动画和声音模式保持和谐一致。视觉和听觉输入可以增强感知到的触感反馈,而精心设计的触感反馈效果可以为视觉和音频效果提供实体感。
相反,如果触感反馈播放不同步,或者与视觉和音频效果不一致,可能会让用户感到不安。在某些情况下,用户可能会认为触感致动器已损坏。
避免使用旧版一次性振动来实现触感反馈
避免使用旧版一次性振动,例如由 VibrationEffect.createOneShot 定义或通过 API Vibrator.vibrate(long) 和 Vibrator.vibrate(long[], int) 执行的振动。
当输入波形结束后,如果振动持续较长时间,则可能会感觉像嗡嗡声,尤其是在触感执行器或驱动器性能较低的设备上。
良好的按键触感反馈信号应持续 10 到 20 毫秒。不过,在向促动器输入 20 毫秒的信号结束后,促动器可能会继续响铃 20 到 50 毫秒。因此,最好避免使用单次振动来提供此类反馈。