reactjs - 在不改变方向的情况下 react Native Expo 方向监听器

标签 reactjs react-native expo screen-orientation

我正在尝试检测我的 React Native 应用程序上的当前方向,而无需更改方向。我制作了一个相机应用程序,我只想在方向改变时翻转图标。现在我不能使用 ScreenOrientation.addOrientationChangeListener(listener)没有实际的方向改变。有什么办法解决这个问题吗?

最佳答案

如果我理解正确,要求是获取设备方向,即使实际方向没有改变,因为它被 orientation 锁定。 .

您可以使用 DeviceMotion 获取设备旋转的模块 (Euler angle)

DeviceMotion.addListener(({rotation}) => {
  const alpha = Math.abs(rotation.alpha);
  this.setState({
    orientation: alpha > 3 || (alpha > 0 && alpha < 0.5) ? 'landscape' : 'protrait'
  });
});

现场演示:https://expo.io/@moshfeu/snack-dc115508-fab4-4be4-818a-5a03f89725bd

旧答案

如果我理解正确,您希望在不改变用户方向的情况下加载应用程序的当前方向。

如果是这样,您可以从 ScreenOrientation.getOrientationAsync() 获取。这将返回 Promisepossible values 之一
ScreenOrientation.getOrientationAsync().then(data => this.setState({data}));

实时示例:https://snack.expo.io/@moshfeu/ff4c76

关于reactjs - 在不改变方向的情况下 react Native Expo 方向监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60362517/

相关文章:

javascript - 大写的 React Element 抛出 Element type is invalid - 为什么?

reactjs - jsx-a11y 当有 htmlFor 时返回 Form 标签必须有关联的控件

reactjs - 对话框内的 Popper 内的 Material-UI TextField 不起作用

android - 如何抑制与项目无关的android gradle依赖项警告

javascript - React-native 博览会中 ImageBackground 上方的 LinearGradient

android - 世博会错误出错无法加载exp ://127. 0.0.1:19000

android - MacOS 上的 Expo 可以通过 XDE 通过 USB 电缆在我的 Android 设备上打开我的应用程序,但不能通过命令行

javascript - React浅拷贝仍然会触发重新渲染?

React-Native-Maps <LocalTiles/> 不起作用

javascript - React Native 收到此错误 'Unrecognized operator abs'