我希望我的活動只能在縱向模式和反向肖像兩種模式下使用。我怎樣才能做到這一點?當我設置android:screenOrientation="portrait"
它將強制活動只在正常肖像 - 反之亦然reversePortrait。縱向或反向縱向活動僅限
請不要告訴我這是強制/鎖定方向的不好方法。我知道這件事,但仍然有客戶要求。感謝您的理解和任何想法。
UPDATE: API級別11和更高
我希望我的活動只能在縱向模式和反向肖像兩種模式下使用。我怎樣才能做到這一點?當我設置android:screenOrientation="portrait"
它將強制活動只在正常肖像 - 反之亦然reversePortrait。縱向或反向縱向活動僅限
請不要告訴我這是強制/鎖定方向的不好方法。我知道這件事,但仍然有客戶要求。感謝您的理解和任何想法。
UPDATE: API級別11和更高
如果您在API層面9+,使用android:screenOrientation="sensorPortrait"
。
Portrait orientation, but can be either normal or reverse portrait based on the device sensor. Added in API level 9.
在AndroidManifest.xml
:
android:screenOrientation="portrait|reversePortrait"
android:configuration="keyboardHidden|orientation"
在你WhateverActivity.java
:
protected void onConfigurationChanged(Configuration newConfig) {
int currentOrientation = getResources().getConfiguration().orientation;
if(newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ||
newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT) {
super.onConfigurationChanged(newConfig);
}
}
你可以試試這個:)
謝謝,這是一個很好的答案,但因爲我忘記告訴我API 11+(蜂窩),alextc的答案更適合我,並且效果很好。我不知道爲什麼,但當我嘗試使用|時出現AAPT錯誤在screenOrientation,所以我不能使用兩個值,但只有一個:( – Speedy
@xjaphx,android:screenOrientation =「portrait | reversePortrait」,這是行不通的,出現以下錯誤:「error:Error:String types not allowed ('screenOrientation',值爲'portrait | reversePortrait')「 –
@PaulAnnekov因爲它是一個簡單的枚舉,所以你不能使用」|「 –
爲後人的緣故,我用這個向後兼容...
public final class OrientationHelper {
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public static void setRequestedOrientationSensorPortrait(Activity activity) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public static void setRequestedOrientationSensorLandscape(Activity activity) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
}
使用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OrientationHelper.setRequestedOrientationSensorPortrait(this);
super.setContentView(R.layout.my_layout);
}
個不錯的辦法IMO,一些應用程序/遊戲只是不會就在某些方向上工作。 – Ricky
非常感謝瑞奇。我剛看到有人在類似的帖子上爭論,所以我想澄清一下,我真的只需要肖像。 – Speedy
很多電子商務應用程序太鎖定方向 – Killer