触感反馈设计原则

对于移动设备上的触感反馈,越少越好。频繁的振动可能会让用户感到厌烦,甚至会让双手感到麻木,因为设备通常在用户全神贯注的情况下随时掌握。此外,它还可能会分散用户的预期任务,导致用户快速关闭所有触感反馈。不过,精心设计的触感反馈能够提供有价值的感官反馈,让用户能够更丰富地与其设备互动。

本页介绍了触感反馈的使用场景,介绍了触感反馈效果的分类,还介绍了应用的基本指南

向应用添加触感反馈的用例

以下是在应用中纳入触感反馈的一些原因。

  • 通知用户需要他们注意的事件。例如来电或短信,或者日历上即将召开的会议。

  • 在用户操作后确认设备中的状态更改。 例如,针对按钮按下操作、解锁手机、接受/拒绝指纹或者激活相机等操作提供点击反馈。

  • 用特效取悦用户。此类效果可以增强正在进行的用户操作或模拟身体互动。例如,滚动反馈、滑块贴靠到位,或者与动画、声音、视频和游戏同步的触感反馈效果。

触感反馈分类

本文介绍的触感反馈原理是围绕清晰触感反馈、丰富触感反馈和振动触感反馈而设计的。

清晰触感反馈

清晰触感反馈是指与离散事件(例如按下按钮)相关的清晰触感反馈。这些效果通常是为了模仿实际的机械操作,例如按下实体按钮时的感觉。

Android 在 VibrationEffect 中预定义了清晰触感反馈效果。不过,一般而言,应用应使用 HapticFeedbackConstants 中面向操作的常量,以确保效果和操作在整个设备上保持一致。

面向操作的常量的另一个优势是,如果用户设备不支持更复杂的效果,则平台可以提供回退行为。

随着触感反馈的应用场景不断扩大,可用的清晰触感反馈有时会让人感觉单调单调。在这种情况下,应力求提供更具表现力的丰富触感反馈。

丰富触感反馈

丰富触感反馈通常需要触感反馈致动器,它们具有更宽的频率带宽,可实现更高的表现力和范围。丰富触感反馈也可通过按不同振幅和间隔对清晰触感反馈基元进行排序来生成。

丰富触感反馈效果的示例如下:

  • 一种“闪烁”的感觉,类似于蝴蝶在指尖上拍动翅膀
  • 手指拖动或滑动表面时感觉到的表面纹理
  • 有摇晃和不稳感,或者有沉重感和回声的感觉

蜂鸣触感反馈

嘈杂的触感反馈表现为嘈杂、尖锐且穿透力的振动,即使在振动结束后,也会产生诸如刺痛感等后续效果。它往往会有在振动完全停止之前产生混响的响铃效果。

蜂鸣触感反馈的示例如下:

  • 操作电钻
  • 骑摩托车
  • 在移动设备上,按键后长响后响铃的振动

早在寻呼机和非智能手机时代,配备低性能触感致动器或驱动单元的低端手机往往会发出蜂鸣的长时间振动,以用于通知目的。

触感反馈设计准则

概括来讲,设计准则可总结为:

  • 优先采用丰富清晰的触感反馈,而不是嘈杂的触感反馈。
  • 确保系统和应用设计保持一致。
  • 注意使用频率和重要性。

设置预定义的触感反馈常量和效果的优先级

如果您的操作包含在 HapticFeedbackConstants 中存在的预定义操作中,请使用该常量。这样可以确保提供一致的用户互动体验,在无障碍考虑因素方面尤为重要。

如果您要自行创建效果,不妨考虑使用 VibrationEffect 预定义效果和 VibrationEffect.Composition 基元。它们更有可能在支持它们的设备上提供一致的优质体验。

将事件重要性、频率与强度相关联

触感反馈效果不应让用户感到应接不暇或无谓的感觉。

  • 应用于非常频繁的事件(例如滚动或移动文本手柄)的触感反馈效果应非常细微,以便提供愉悦的整体体验。

  • 例如,刷新网页或提交表单等更重要的事件应比更改切换开关或滚动列表更重要。

  • 结合这两个概念,创建在互动到达目标时更强的效果,例如通过拖动、放下或贴靠操作逐渐增加一系列 tick 的振幅。

保持稳定

在应用中使用触感反馈要保持一致。如果特定互动(例如表单提交或应用内导航)具有触感反馈,请确保对所有类似互动应用相同的效果。这有助于用户将含义与特定触感反馈相关联。

此外,为明确定义的互动(例如时间选择器或虚拟键盘)使用相同的 HapticFeedbackConstants,以便与 Android 系统保持一致。

搭配触感反馈,设计视觉和听觉体验

考虑将触感反馈纳入整体用户体验。

我们强烈建议协同设计视觉、音频和触感反馈效果。使其与视觉动画和声音模式协调一致。视觉和听觉输入可以增强触感反馈,而设计良好的触感反馈效果可以为视觉和听效带来身体感

相反,如果触感反馈不同步播放或感觉与视觉效果和音效不一致,则可能会让用户感到有点不安。在某些情况下,用户可能会感知到触感反馈致动器已损坏。

避免用于提供触感反馈的旧版单发振动

避免使用旧的一次性振动,例如由 VibrationEffect.createOneShot 定义或通过 API Vibrator.vibrate(long)Vibrator.vibrate(long[], int) 执行的振动。

如果在输入波形结束后长时间持续,这些振动可能会感觉到蜂鸣声,尤其是在采用低性能触感反馈致动器或驱动单元的设备上。

良好的按键触感反馈信号应持续 10 到 20 毫秒。不过,致动器在 20 毫秒的输入结束后,可能会继续响铃 20 到 50 毫秒。因此,对于此类反馈,最好避免使用单次振动。