2017-04-03 51 views
0

我喜歡用戶可以指定所需活動的方向:橫向或縱向。用戶指定活動方向

我的活動被宣佈在AndroidManifest.xml這樣的:

<activity 
    android:name=「.ActivityA」 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:configChanges="keyboardHidden" 
    android:windowSoftInputMode="adjustResize"> 
</activity> 

而且在活動的onCreate方法我稱之爲

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    int preferedOrientation = /* Code that get the prefered orientation */ 
    setRequestedOrientation(preferedOrientation); 
    ... 
} 

但是當用戶指定的景觀,活動首次出現在PORTRAIT中,然後重新創建到LANDSCAPE。

這是怎麼回事?

謝謝。

回答

0

使用android:configChanges="orientation|screenSize"代替android:configChanges="keyboardHidden"

<activity 
    android:name=「.ActivityA」 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:configChanges="orientation|screenSize" 
    android:windowSoftInputMode="adjustResize"> 
</activity> 

Documentation

注意:與Android 3.2(API級13)中, 「畫面尺寸」 開始也改變時在縱向和橫向取向 之間的設備切換。因此,如果你要防止運行時重新啓動由於 方向變化的API等級13以上的開發時(通過的minSdkVersion和targetSdkVersion屬性聲明 ),你 必須包括除「orientation」中的「screenSize」值值爲 。也就是說,你必須decalare android:configChanges="orientation|screenSize"。但是,如果您的 應用程序的目標級別爲12或更低,則您的活動始終會自行處理此配置更改(即使在更高版本的Android 3.2或更高版本的設備上運行此配置更改 也不會重新啓動您的活動)。