MAUI如何实现振动效果 MAUI Vibrate功能使用

来源:这里教程网 时间:2026-02-21 17:39:49 作者:

MAUI 中实现振动效果主要依靠

Microsoft.Maui.Devices.Vibration
类,它提供跨平台的统一 API,无需手动处理 Android/iOS/HarmonyOS 权限细节(但需注意平台实际限制)。

基础振动调用

MAUI 的振动功能简洁直接,支持短震、长震和自定义时长三种方式:

短震动(约15ms):适合点击反馈,调用
Vibration.Vibrate()
不传参或传空时长
长震动(约400ms):用于重要提醒,使用
Vibration.Vibrate(TimeSpan.FromMilliseconds(400))
自定义震动(如200ms):传入明确时长,例如
Vibration.Vibrate(TimeSpan.FromMilliseconds(200))

注意:iOS 上所有自定义时长都会被系统强制转为短震或长震两种模式之一,无法精确控制毫秒级;Android 和 HarmonyOS 支持更灵活的时长(但受系统策略限制,超1000ms可能被截断)。

权限与平台适配

MAUI 项目本身不自动申请振动权限,需手动配置:

Android:在
AndroidManifest.xml
中添加
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
iOS:无需额外权限声明,但需确保设备未开启“减弱触感”(Settings → Accessibility → Touch → Reduce Motion & Haptics) HarmonyOS:在
module.json5
中声明
"ohos.permission.VIBRATE"
,且需调用
vibrator.startVibration()
等原生能力(MAUI 当前暂未内置 HarmonyOS 振动支持,需通过
@kit.SensorServiceKit
插件桥接)

安全调用与状态检查

避免运行时异常,建议每次振动前检查设备是否支持并已启用:

Vibration.IsSupported
判断当前平台是否支持振动
Vibration.IsVibrating
避免重复触发(尤其在按钮快速连点场景)
可封装防抖逻辑,例如:300ms 内只允许一次震动

示例代码片段:

if (Vibration.IsSupported && !Vibration.IsVibrating)
    Vibration.Vibrate(TimeSpan.FromMilliseconds(150));

触觉反馈(Haptic Feedback)进阶用法

若需更精细的反馈(如键盘敲击、滑动确认),MAUI 还提供

IHapticFeedback
接口:

获取默认实例:
HapticFeedback.Default
支持预设类型:
HapticFeedbackType.Click
.HeavyClick
.Selection
调用方式:
HapticFeedback.Default.Perform(HapticFeedbackType.Click)

该接口在 iOS 和 Android 上会映射为系统原生触感效果,比纯振动更自然,但不适用于所有场景(比如通知类提醒仍推荐用

Vibration
)。

基本上就这些。MAUI 的振动功能开箱即用,关键在权限补全、平台差异识别和合理封装。

相关推荐