2013-03-07 55 views
4

我知道如何在一個特定的方向鎖定的活動(在AndroidManifest.xml中):安卓:如何堅持相同的方向活動開始

android:screenOrientation="landscape|portrait" 

我知道如何鎖定到具體方向編程︰

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 

但是,如何鎖定活動的方向,其中開始?例如,如果它開始肖像,它應該堅持這一點。

謝謝!

+0

您的意思是,如果用戶以縱向模式持有手機,應用程序應該以縱向模式啓動?我認爲它已經在默認情況下... – Barney 2013-03-07 22:10:33

+0

我面臨同樣的問題。請給我解決方案。 – Hemant 2014-03-01 13:09:28

回答

1

活動:

switch (((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getRotation()) { 
    case Surface.ROTATION_90: 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    break; 
    case Surface.ROTATION_180: 
    setRequestedOrientation(9/* reversePortait */); 
    break; 
    case Surface.ROTATION_270: 
    setRequestedOrientation(8/* reverseLandscape */); 
    break; 
    default : 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
} 

發現here

5

當您的應用程序啓動時使用getResources().getConfiguration().orientation,然後以編程方式像上面那樣設置方向。該方法將返回ORIENTATION_LANDSCAPEORIENTATION_PORTRAIT

+0

這幾乎完成,問題是_two_橫向:_SCREEN_ORIENTATION_LANDSCAPE_和_SCREEN_ORIENTATION_REVERSE_LANDSCAPE_。肖像相同。因此,由於getResources()。getConfiguration()。orientation'只返回縱向或橫向(但不是反向),所以我可能會弄錯。 – Menny 2013-03-08 01:04:40

+0

謝謝。我找到了解決方案。 – Menny 2013-03-08 01:17:14

0

這是我要做的事:

android:screenOrientation="portrait" 
android:configChanges="keyboard|keyboardHidden|orientation" 

在找到解決方案在清單

+1

這不好:方向將** **始終**畫像。我希望它堅持活動開始的方向,這可能是風景。 – Menny 2013-03-08 01:07:08

+0

好的抱歉,我誤解了這個問題 – JRowan 2013-03-08 01:14:32