我正在尝试检测我的 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()
获取。这将返回 Promise
与 possible 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/