15

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

单击 android 应用程序按钮 - 发出声音并向用户提供触觉反馈。在声音上,我看到有 github 讨论和未解决的问题,但我在任何地方都找不到关于触觉反馈的任何信息。

如何使我的视图(任何可触摸的视图..)在点击时产生触觉反馈?这在应用程序中是非常重要的感觉。

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

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

这不需要应用程序获得Vibrate.

并且我自己使用Vibrateapi 管理触觉反馈将导致全局禁用此选项的用户体验不良行为

谢谢

4

5 回答 5

7

如果您将 Expo 与 react-native 一起使用,我建议您使用Expo haptics

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

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

于 2019-07-28T07:49:29.600 回答
2

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

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

于 2017-07-25T19:23:00.430 回答
2

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

请记住,触觉反馈仅适用于一些最新的安卓设备和 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.

于 2020-01-27T04:05:14.000 回答
0

您可以使用内置的振动模块facebook.github.io/react-native/docs/touchablewithoutfeedback

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

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

请记住将其包含在您的 AndroidManifest 中

<uses-permission android:name="android.permission.VIBRATE" />
于 2017-05-03T16:34:39.200 回答
0

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

于 2019-01-18T06:17:38.717 回答