一个库,可提供对 Android 系统振动效果和 iOS 触觉引擎的访问。
expo-haptics
提供触觉(触摸)反馈:
¥expo-haptics
provides haptic (touch) feedback for:
使用 Vibrator 系统服务的 Android 设备。
¥Android devices using Vibrator system service.
使用 Taptic Engine 的 iOS 10+ 设备。
¥iOS 10+ devices using the Taptic Engine.
在 iOS 上,如果用户设备上满足以下任一条件,Taptic 引擎将不执行任何操作:
¥On iOS, the Taptic engine will do nothing if any of the following conditions are true on a user's device:
低功耗模式已启用。这可以用 expo-battery
检测到。
¥Low Power Mode is enabled. This can be detected with expo-battery
.
用户在设置中禁用了 Taptic Engine。
¥User disabled the Taptic Engine in settings.
iOS 相机处于活动状态(以防止不稳定)。
¥iOS Camera is active (to prevent destabilization).
¥Installation
-
npx expo install expo-haptics
If you're installing this in a bare React Native app, you should also follow these additional installation instructions.
¥Configuration
在 Android 上,此库需要控制设备振动的权限。VIBRATE
权限会自动添加。
¥On Android, this library requires permission to control vibration on the device. The VIBRATE
permission is added automatically.
¥Usage
import * as React from 'react';
import { StyleSheet, View, Text, Button } from 'react-native';
import * as Haptics from 'expo-haptics';
export default function App() {
return (
<View style={styles.container}>
<Text style={styles.text}>Haptics.selectionAsync</Text>
<View style={styles.buttonContainer}>
<Button title="Selection" onPress={() => Haptics.selectionAsync()} />
</View>
<Text style={styles.text}>Haptics.notificationAsync</Text>
<View style={styles.buttonContainer}>
<Button
title="Success"
onPress={
() =>
Haptics.notificationAsync(
Haptics.NotificationFeedbackType.Success
)
}
/>
<Button
title="Error"
onPress={
() =>
Haptics.notificationAsync(
Haptics.NotificationFeedbackType.Error
)
}
/>
<Button
title="Warning"
onPress={
() =>
Haptics.notificationAsync(
Haptics.NotificationFeedbackType.Warning
)
}
/>
</View>
<Text style={styles.text}>Haptics.impactAsync</Text>
<View style={styles.buttonContainer}>
<Button
title="Light"
onPress={
() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light)
}
/>
<Button
title="Medium"
onPress={
() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium)
}
/>
<Button
title="Heavy"
onPress={
() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Heavy)
}
/>
<Button
title="Rigid"
onPress={
() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Rigid)
}
/>
<Button
title="Soft"
onPress={
() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Soft)
}
/>
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
paddingHorizontal: 16,
},
buttonContainer: {
flexDirection: 'row',
alignItems: 'stretch',
marginTop: 10,
marginBottom: 30,
justifyContent: 'space-between',
},
});
import * as Haptics from 'expo-haptics';
Haptics.impactAsync(style)
Name | Type | Description |
---|---|---|
style (optional) | ImpactFeedbackStyle | A collision indicator that on iOS is directly mapped to Default: ImpactFeedbackStyle.Medium |
Returns
Promise<void>
A Promise
which fulfils once native size haptics functionality is triggered.
Haptics.notificationAsync(type)
Name | Type | Description |
---|---|---|
type (optional) | NotificationFeedbackType | A notification feedback type that on iOS is directly mapped to UINotificationFeedbackType,
while on Android these are simulated using Vibrator.
You can use one of Default: NotificationFeedbackType.Success |
The kind of notification response used in the feedback.
Returns
Promise<void>
A Promise
which fulfils once native size haptics functionality is triggered.
Haptics.selectionAsync()
Used to let a user know when a selection change has been registered.
Returns
Promise<void>
A Promise
which fulfils once native size haptics functionality is triggered.
ImpactFeedbackStyle
The mass of the objects in the collision simulated by a UIImpactFeedbackGenerator object
UINotificationFeedbackStyle
ImpactFeedbackStyle Values
Medium
ImpactFeedbackStyle.Medium = "medium"
A collision between moderately sized user interface elements.
Rigid
ImpactFeedbackStyle.Rigid = "rigid"
A collision between user interface elements that are rigid, exhibiting a small amount of compression or elasticity.
Soft
ImpactFeedbackStyle.Soft = "soft"
A collision between user interface elements that are soft, exhibiting a large amount of compression or elasticity.
NotificationFeedbackType
The type of notification feedback generated by a UINotificationFeedbackGenerator object.
UINotificationFeedbackType
NotificationFeedbackType Values
Error
NotificationFeedbackType.Error = "error"
A notification feedback type indicating that a task has failed.
Success
NotificationFeedbackType.Success = "success"
A notification feedback type indicating that a task has completed successfully.
Warning
NotificationFeedbackType.Warning = "warning"
A notification feedback type indicating that a task has produced a warning.