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

时间:2013-12-12 15:06:04

标签: android landscape-portrait

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

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

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

以下是我目前在onConfigurationChanged上所做的事情:

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

这就是我在按钮中所做的事情,但失败了,因为它将Activity锁定在横向中:

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

我需要的是进入横向模式,但允许用户使用传感器更改回肖像,就像Youtube一样。

我可以通过锁定横向直到设备处于水平状态(通过直接从传感器读取)然后再次解锁方向来实现。我不认为这是最“正确”的做法。

4 个答案:

答案 0 :(得分:4)

2016年未来派年度的问候。

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

...将方向设置为所需设置后立即。


这是我自己以前的答案

  

由于缺乏答案,而且因为我不能解决这个问题   一个优雅的方式,我最终使用OrientationListener来获得   设备的原始程度。

     

通过这种方式,我能够释放用户的方向配置   一旦设备定位像实际布局。

     

如果有人有兴趣获得更多信息,请告诉我   知道。

答案 1 :(得分:0)

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

或者将此行放在清单文件

中的活动标记中
  

机器人:screenOrientation = “风景”;

答案 2 :(得分:-1)

试试这个..

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

或在你的清单中

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

答案 3 :(得分:-1)

将此信息放入您的Manifest中以进行各自的活动

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