在反应原生的可触摸视图上启用触觉反馈

时间:2017-05-03 12:48:45

标签: react-native react-native-android haptic-feedback

我正在编写一个本机反应应用程序,而且我注意到虽然按钮在单击时看起来像本机按钮 - 但它们不像一个按钮(至少不像android按钮的行为)。

点击Android应用程序按钮 - 发出声音并向用户提供触觉反馈。 在声音中,我看到有github讨论和公开问题,但我无法找到任何关于触觉反馈的内容。

如何使我的观点(任何可触摸的视图......)在点击上进行触觉反馈? 这在应用程序中非常重要。

我想要这样的东西(在android中)

View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);

这不需要应用程序获得Vibrate的权限。

使用Vibrate api自行管理触觉反馈将导致全局禁用此选项的用户体验不良行为

由于

5 个答案:

答案 0 :(得分:3)

您可以使用内置振动模块 https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html#props

import { Vibration } from 'react-native';
...

<Touchable
  onPressIn={() => Vibration.vibrate()}
/>

请记住将此内容包含在AndroidManifest中

<uses-permission android:name="android.permission.VIBRATE" />

答案 1 :(得分:2)

我在github上发现了这个组件https://github.com/charlesvinette/react-native-haptic

我还没有尝试过,但它可以帮助您获得所需的触觉反馈。

答案 2 :(得分:0)

我在Github上发布了一个提供此功能的项目。 检查此仓库:react-native-haptic-view

答案 3 :(得分:0)

我建议您使用Expo haptics

安装库之后,您可以像这样使用它:

<TouchableOpacity onPress = { ()=> { 
     Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success)
     or
     Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light) 
     or
     Haptics.selectionAsync()
   
 } } > </TouchableOpacity>

答案 4 :(得分:0)

我也有几乎相同的要求,最终我使用了这个库react-native-haptic-feedback

请记住,触觉反馈仅在某些最新的android设备和iPhone 6s以上的iOS中可用。这是一个简单的代码段:

import ReactNativeHapticFeedback from "react-native-haptic-feedback";

const options = {
  enableVibrateFallback: true,
  ignoreAndroidSystemSettings: false
};

ReactNativeHapticFeedback.trigger("impactMedium", options);

对于您而言,它可以直接与按钮的onPress方法配合使用,例如:

<TouchableOpacity onPress={()=>{ReactNativeHapticFeedback.trigger("impactMedium", options);}} />

注意:我发现最多设备支持的最通用类型是impactMedium