2011-03-24 53 views
23

我應該始終顯示在風景模式的活動。所以我加了android:screenOrientation="landscape"如何讓屏幕在橫向模式在Android中

但問題是,當我旋轉設備180度,顯示是倒置的。有沒有辦法處理這個問題,以便屏幕元素始終顯示正確。

+0

所以,你希望它無論是在橫向或反向的風景? – 2011-03-24 19:16:56

+0

@RobbyPond現在我面臨着一個問題,我希望我的應用程序能夠成爲風景和逆向景觀。所以如果我需要這兩種模式呢? – 2011-11-15 06:48:34

回答

7

所以只是給大家的信息,這是我做的。

  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

0

嗯。這也取決於你使用的框架版本。試試這一開始:

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

2

在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> 
55

其實你真正想要的是規定:

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

0

的好方法是使用

setRequestedOrientation(6); 

6是sensorLandscape價值,但沒有爲它定義常量它似乎的。

9

其他人所說的sensorLandscape ...在你的活動編程做到這一點(或基酶活性),您可以將方向設置爲:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

我在onResume()做。當您在活動中間將設備翻轉180度時,這將尊重風景和逆向景觀,而無需使用。

這對我很有幫助,因爲對於平板電腦,我需要景觀/景觀僅反轉,併爲手機,我需要肖像/肖像僅反轉,不希望做兩個獨立的AndroidManifest文件。 ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT也存在。

相關問題