设置横向方向而不锁定传感器方向



我正在开发一个具有内联视频播放器的应用程序。我需要重现Youtube的全屏行为。

当用户横向旋转设备时,我通过onConfigurationChanged捕捉到它,并进行相应的布局修改。

不过,我也有一个按钮来设置全屏。我需要这个按钮来进入landscpe(ergo,全屏),但不要通过传感器锁定方向变化。

以下是我目前在onConfigurationChanged:上所做的工作

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (this.isLandscape(newConfig.orientation)){
        this.goToFullScreenMode();
    }else{
        this.goToInlineMode();
    }
}

以下是我在按钮中所做的操作,但失败了,因为它将活动锁定在横向:

this.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

我需要的是转到横向模式,但允许用户像Youtube一样,用传感器改回纵向模式。

我可以通过锁定横向直到设备水平(直接从传感器读取),然后再次解锁方向来完成。我不认为这是最"正确"的方法。

来自未来的2016年的问候。

生活的道路让我在另一个Android应用程序上回到了同样的困境,我发现问题的真正答案是简单地添加这个。。。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

就在将方向设置为所需设置之后。


这是我自己以前的答案

由于缺乏答案,而且我无法在一种优雅的方式,我最终使用OrientationListener获得设备的原始度数。

这样,我就可以发布用户的定向配置一旦设备像实际布局一样定位。

如果有人有兴趣了解更多信息,请告诉我知道

在res中创建一个layout-land目录,并将布局XML文件的横向版本放在该目录中。

或者将这一行放在清单文件中的活动标签中

android:screenOrientation="横向";

试试这个。。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

或者在你的清单中

 <activity
        android:name="Activity"    
        android:screenOrientation="landscape"    />

将其放入您各自活动的清单中

<activity
    android:name="YourActivityName goes here"    
    android:screenOrientation="landscape"    />

最新更新