用户指定活动方向
问题描述:
我喜欢用户可以指定所需活动的方向:横向或纵向。用户指定活动方向
我的活动被宣布在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。
这是怎么回事?
谢谢。
答
使用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>
注意:与Android 3.2(API级13)中, “画面尺寸” 开始也改变时在纵向和横向取向 之间的设备切换。因此,如果你要防止运行时重新启动由于 方向变化的API等级13以上的开发时(通过的minSdkVersion和targetSdkVersion属性声明 ),你 必须包括除“
orientation
”中的“screenSize
”值值为 。也就是说,你必须decalareandroid:configChanges="orientation|screenSize"
。但是,如果您的 应用程序的目标级别为12或更低,则您的活动始终会自行处理此配置更改(即使在更高版本的Android 3.2或更高版本的设备上运行此配置更改 也不会重新启动您的活动)。