仅限纵向或反向肖像活动

我希望我的活动仅在两种肖像模式下都可用 – 肖像和reversePortrait。 我怎样才能做到这一点? 当我设置android:screenOrientation="portrait" ,它将强制活动仅在正常肖像中 – 反之亦然,使用reversePortrait。

请不要告诉我这是强制/锁定方向的坏方法。 我知道,但客户仍在请求它。 感谢您的理解和任何想法。

更新: API等级11及更高版本

Related of "仅限纵向或反向肖像活动"

如果您使用的是API级别9+,请使用android:screenOrientation="sensorPortrait"

纵向,但可以是基于设备传感器的正常或反向纵向。 在API级别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); } } 

你可以尝试这个:)

为了后人的缘故,我使用它来向后兼容……

 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); }