📌 场景介绍
震动是提升用户交互反馈的重要方式,适用于:
-
操作确认提示(如长按成功)
-
错误提醒(如密码错误)
-
游戏震动反馈
本篇将基于 @ohos.vibrator
模块实现震动功能,并说明必要的权限配置。
🧱 权限配置(config.json)
在 config.json
中添加如下权限声明:
"module": {
...
"reqPermissions": [
{
"name": "ohos.permission.VIBRATE"
}
]
}
🧱 页面结构
/entry/src/main/ets
└── pages/
└── VibratorDemo.ets // 按钮震动反馈页面
🧩 VibratorDemo.ets 示例页面
import vibrator from '@ohos.vibrator'
@Entry
@Component
struct VibratorDemo {
private async vibrateShort() {
try {
const vibratorInfo = await vibrator.getVibratorManager()
vibratorInfo?.vibrate(100) // 震动100ms
console.info('短震动已触发')
} catch (err) {
console.error('震动失败:', JSON.stringify(err))
}
}
private async vibratePattern() {
try {
const vibratorInfo = await vibrator.getVibratorManager()
// 自定义震动模式:[震动200ms, 停顿100ms, 再震动300ms]
vibratorInfo?.vibrate([200, 100, 300])
console.info('模式震动已触发')
} catch (err) {
console.error('震动失败:', JSON.stringify(err))
}
}
build() {
Column() {
Text("震动反馈演示").fontSize(22).margin(20)
Button("短震动").onClick(() => this.vibrateShort()).margin(10)
Button("震动模式").onClick(() => this.vibratePattern()).margin(10)
}
.padding(30)
.height('100%')
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
}
}
✅ 效果说明
-
点击“短震动”:手机震动 100ms
-
点击“震动模式”:先震动 200ms,停 100ms,再震 300ms
-
控制台可看到震动触发日志
🔧 拓展建议
-
游戏中击打或命中目标时触发震动
-
与音效、动画配合实现多模态反馈
-
在低电量或勿扰模式下判断是否可震动(需扩展判断 API)