如何在Android中将屏幕保持在横向模式

时间:2011-03-24 19:06:40

标签: android

我的活动应始终以横向模式显示。所以我添加了android:screenOrientation="landscape"

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

6 个答案:

答案 0 :(得分:56)

实际上你真正想要的是指定:

android:screenOrientation="sensorLandscape"
在AndroidManifest.xml中

。这将在横向和反向景观之间捕捉时收听传感器数据。

答案 1 :(得分:10)

其他人提到sensorLandscape ...要在您的活动(或基本活动)中以编程方式执行此操作,您可以将方向设置为:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

我在onResume()做这件事。当您在活动中间将设备翻转180度时,这将尊重横向和反向横向,而无需使用onConfigurationChanged()

这对我有帮助,因为对于平板电脑我只需要横向/横向反转,对于手机我只需要纵向/纵向反转,并且不想做两个单独的AndroidManifest文件。 ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT也存在。

答案 2 :(得分:7)

所以只为每个人提供信息,这就是我所做的。

  1. 在Android清单中添加了android:screenOrientation =“landscape”。
  2. 在简历方法中添加以下代码行
  3. Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
    int orientation = display.getRotation();
    
    if(orientation==Surface.ROTATION_180)
    {
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
    }
    

    这样,即使用户将设备倒置,我的屏幕也始终正确定位。

答案 3 :(得分:2)

在Android Manifest中写下这个:

   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>

答案 4 :(得分:0)

嗯。这取决于你正在使用的框架版本。试试这个开始:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

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

答案 5 :(得分:0)

好方法是使用

setRequestedOrientation(6);

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