在移动设备上的触觉反馈方面,少即是多。过多的振动可能会令人烦恼,甚至会使手麻木,因为设备通常在用户的手中,并且用户会全神贯注。它也可能分散用户对预期任务的注意力,这可能导致用户快速关闭所有触觉反馈。但是,精心设计的触觉反馈提供了宝贵的感官反馈,使用户能够更深入地参与其设备。
此页面解释了使用触觉反馈的用例,介绍了触觉效果的分类,并涵盖了应用的基本指南。
在您的应用中添加触觉反馈的用例
以下是一些将触觉反馈整合到您的应用中的原因。
通知用户需要其注意的事件。 例如,来电或短信,或日历上的即将举行的会议。
确认用户操作后设备的状态更改。 例如,按钮按下时的点击反馈、解锁手机、指纹识别接受或拒绝,或激活摄像头。
使用效果让用户感到愉悦。 这些效果可以增强正在进行的用户操作或模拟物理交互。例如,滚动反馈、滑块卡入到位,或与动画、声音、视频和游戏同步的触觉效果。
触觉分类
此处提供的触觉原则围绕清晰触觉、丰富触觉和震动触觉设计。
清晰触觉
清晰触觉是指与离散事件(如按钮按下)相关的清晰而干净的感觉。这些效果通常旨在模仿相应的现实世界机械动作,例如按下物理按钮时感受到的动作。
Android 在VibrationEffect
中预定义了清晰的触觉效果。但是,一般来说,应用应使用来自HapticFeedbackConstants
的面向操作的常量,以确保设备上效果和操作的一致性。
面向操作的常量的另一个优点是,如果用户的设备不支持更复杂的效果,则平台可以提供回退行为。
随着您扩展触觉反馈的用例,可用的清晰触觉有时可能会显得平淡单调。在这种情况下,请尝试使用更具表现力的丰富触觉。
丰富触觉
丰富触觉通常需要具有更宽频率带宽的触觉执行器,从而实现更大的表现力和范围。丰富触觉还可以通过对不同幅度和间隔的清晰触觉基元进行排序来产生。
丰富触觉效果的示例包括
- “飘动”的感觉,类似于蝴蝶在您的指尖上拍打翅膀
- 手指拖动或滑动时感觉到的表面的纹理
- 摇晃和不稳定感,或沉重感和回声
震动触觉
震动触觉的特点是噪音大、尖锐且具有穿透力的振动,即使振动结束后也会留下余震,例如刺痛感。它也往往会产生回声效果,在振动完全停止之前感觉像回声。
震动触觉的示例包括
- 操作一台碎石机
- 骑摩托车
- 在移动设备中,按键后长时间的、响亮的振动
追溯到寻呼机和功能手机,低端移动手机配备低性能的触觉执行器或驱动器,倾向于产生长时间的震动通知。
触觉设计指南
在较高层次上,设计指南可以概括为
- 优先选择丰富和清晰的触觉而不是震动触觉。
- 保持一致性,与系统和应用设计都保持一致。
- 注意使用频率和重要性。
优先考虑预定义的触觉常量和效果
如果您的操作包含在HapticFeedbackConstants
中存在的预定义操作中,请使用该常量。这可确保一致的用户交互体验,这对于辅助功能考虑尤其宝贵。
如果您正在创建自己的效果,请考虑使用VibrationEffect
预定义效果和VibrationEffect.Composition
基元。它们更有可能在支持它们的设备上提供一致的质量体验。
将事件重要性和频率与强度相关联
触觉效果不应压倒用户或显得不必要。
应用于非常频繁的事件(例如滚动或移动文本句柄)的触觉效果应非常微妙,以提供愉快的整体体验。
更重要的事件(例如刷新页面或提交表单)应比更改切换或在列表上滚动更强烈,例如。
结合这两个概念来创建随着交互达到目标而变得更强烈的效果,例如,随着拖动、放下或捕捉动作,逐渐增加一系列滴答声的振幅。
保持一致性
在您的应用中保持触觉反馈应用的一致性。如果特定的交互(如表单提交或应用内导航)有触觉反馈,请确保对所有类似的交互应用相同的效果。这有助于用户将特定触觉反馈与含义相关联。
为保持与 Android 系统的一致性,请使用相同的 HapticFeedbackConstants
来定义良好的交互,例如时间选择器或虚拟键盘。
将视觉和音频体验与触觉反馈一起设计
将触觉反馈视为整体用户体验的一部分。
我们强烈建议共同设计视觉、音频和触觉效果。使其与视觉动画和声音模式和谐一致。视觉和听觉输入可以增强感知到的触觉反馈,而精心设计的触觉效果可以为视觉和音频效果提供一种物理感。
相反,触觉反馈如果与视觉和音频效果不同步或感觉不一致,可能会让用户感到不安。在某些情况下,用户可能会认为触觉执行器出现了故障。
避免使用传统的单次振动作为触觉反馈
避免使用传统的 单次振动,例如由 VibrationEffect.createOneShot
定义或使用 API Vibrator.vibrate(long)
和 Vibrator.vibrate(long[], int)
执行的振动。
当输入波形结束后,这些振动可能会持续很长时间,从而产生嗡嗡声,尤其是在使用低性能触觉执行器或驱动程序的设备上。
良好的按键点击触觉反馈信号应该持续 10 到 20 毫秒。但是,在对执行器进行 20 毫秒的输入结束后,执行器可能会继续振动 20 到 50 毫秒。因此,最好避免在这种类型的反馈中使用单次振动。