使用React Native在纵向锁定的Android应用程序中使用方向感知模式

时间:2018-01-12 07:12:19

标签: android react-native android-orientation

我正在开发一个本机应用程序,由于应用程序的性质,它通常会被锁定为肖像。使用AndroidManifest.xml中的以下标志将应用程序锁定为纵向

android:screenOrientation="portrait"

现在我想让应用程序能够在应用程序中的某个位置旋转。 react-native中的Modal组件似乎是正确的选择。模态配置如下:

<Modal
    animationType="slide"
    transparent={false}
    supportedOrientations={['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right']}  
>
    <View style={styles.modal}>
        <View>
            <TouchableHighlight onPress={() => {
                this.setState({
                    awareVisible: false
                });
            }}>
            <Text>Hide Modal</Text>
            </TouchableHighlight>
        </View>
    </View>
</Modal>

在iOS中,这种方法很好,视图会旋转,在Android中它不会做任何事情。我尝试创建一个自定义模态组件并在Android代码中捕获它,但这对我来说也不起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用react-native-orientation ...执行此操作,并且由于似乎不再维护此项目,因此最好使用以下fork:react-native-orientation-locker

有了它,您只需要在需要时设置以下内容:

Orientation.unlockAllOrientations(); //this will unlock the view to all Orientations
Orientation.lockToPortrait(); //this will lock the view to Portrait
Orientation.lockToLandscapeLeft(); //this will lock the view to Landscape

我还在我的一个应用程序中使用了它,它被强制设置为纵向模式。但是我需要使用风景模式来查看图像库的图像。 在Android和IOS上都可以很好地工作。

希望这对您有所帮助。