如何让屏幕在横向模式在Android中

问题描述:

我应该始终显示在风景模式的活动。所以我加了android:screenOrientation="landscape"如何让屏幕在横向模式在Android中

但问题是,当我旋转设备180度,显示是倒置的。有没有办法处理这个问题,以便屏幕元素始终显示正确。

+0

所以,你希望它无论是在横向或反向的风景? – 2011-03-24 19:16:56

+0

@RobbyPond现在我面临着一个问题,我希望我的应用程序能够成为风景和逆向景观。所以如果我需要这两种模式呢? – 2011-11-15 06:48:34

所以只是给大家的信息,这是我做的。

  1. 在Android清单中增加了android:screenOrientation =“landscape”。
  2. 在简历上添加方法的代码
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
int orientation = display.getRotation(); 

if(orientation==Surface.ROTATION_180) 
{ 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); 
} 

这样,我的屏幕上始终是即使用户握持设备倒挂正确定位这些行。

+0

它不适用于我,因为它不会再次调用onResume – Jacky 2013-05-29 10:44:46

嗯。这也取决于你使用的框架版本。试试这一开始:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

如果这样做效果很好。如果它不是你必须告诉我们更多关于你的应用程序的布局。

+0

是的。我做到了。这里是我的onResume方法 Display display =((WindowManager)getSystemService(WINDOW_SERVICE))。getDefaultDisplay(); \t \t int orientation = display.getRotation(); \t \t如果((取向== Surface.ROTATION_90)||(取向== Surface.ROTATION_270)){ \t \t \t setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); \t \t}否则如果(取向== Surface.ROTATION_180){ \t \t \t setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); – prashant 2011-03-24 19:14:31

+1

平心而论应该工作。做得好! – Taranasus 2011-03-24 19:43:21

在Android清单写:

android:configChanges="orientation" 
       android:screenOrientation="landscape" 

像在下面的例子。

<activity android:name=".MainActivity" 
       android:label="@string/app_name" 
       android:configChanges="orientation" 
       android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

其实你真正想要的是规定:

android:screenOrientation="sensorLandscape" 

在AndroidManifest.xml中。这将监听传感器数据,同时在风景和逆向景观之间捕捉。

+0

+1 Thanx CaseyB,它只需要1分钟来实现这两个方向。为了节省宝贵的时间,再次感谢。 – 2011-11-15 06:51:41

+1

仅供参考,仅适用于平板电脑,我已经测试过相同的设备,但默认情况下它总是以纵向模式显示应用程序,即它在电话中不工作 – 2011-11-15 08:59:41

+2

sensorLandscape已添加到Froyo(2.2)中,因此它可用于任何具有该功能的设备后来。 – CaseyB 2011-11-15 18:10:31

的好方法是使用

setRequestedOrientation(6); 

6是sensorLandscape价值,但没有为它定义常量它似乎的。

其他人所说的sensorLandscape ...在你的活动编程做到这一点(或基酶活性),您可以将方向设置为:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

我在onResume()做。当您在活动中间将设备翻转180度时,这将尊重风景和逆向景观,而无需使用。

这对我很有帮助,因为对于平板电脑,我需要景观/景观仅反转,并为手机,我需要肖像/肖像仅反转,不希望做两个独立的AndroidManifest文件。 ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT也存在。