2010-04-18 118 views
13

我試圖用凍結取向:應用程序方向(橫向或縱向)如何鎖定?

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

雖然顯示停留在縱向,活動仍在重建。任何想法如何解決這個問題?

如何應用的方向被鎖定,使得該活動不會對方向變化重現?

回答

40

首先,不使用setRequestedOrientation()如果你能避免它。改爲使用<activity>清單元素中的android:screenOrientation屬性。

其次,您還需要在<activity>清單元素中使用android:configChanges="keyboardHidden|orientation"以防止銷燬/重新創建循環。

4

更具體的例子爲縱向:

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

android:screenOrientation設置初始取向和android:configChanges空隙觸發相應的生命週期方法的事件在屏幕上更改。

3

試試這個:在你的AndroidManifest.xml

1.-設置所需的屏幕方向

android:screenOrientation="portrait|landscape" 

它應該是這樣的:

<application 
    android:allowBackup="true" 
    android:icon="~icon path~" 
    android:label="~name~" 
    android:supportsRtl="true" 
    android:screenOrientation="portrait" 
    android:theme="@style/AppTheme"> 
    </application> 

2:此加入您的onCreate無效(或任何你想要)在Java活動文件(例如: 「MainActivity.java」):

super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); 

它應該是這樣的:

protected void onCreate(Bundle savedInstanceState) { 
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);} 

現在屏幕不會移動,即使屏幕旋轉是在設備中。

相關問題