Android系统不像iOS有shouldAutorotateToInterfaceOrientation:以及项目info.plist中的支持屏幕朝向属性设置那么直白的屏幕朝向支持,而且2.2以下和2.3以上还有对自动旋屏功能支持的差异:
在2.2一下,manifest中可以通过android:screenOrientation=”landscape”属性设置朝向,但这显然没有像iOS那样指明是landscape right还是landscape left,而且测试发现实际效果也只是锁定在了landscape的一个朝向,并不支持根据重力感应的两方向自动旋转。
在2.3及以上的target下,可以通过设置android:screenOrientation=”sensorLandscape”实现landscape的两方向自动旋转,为了同时兼容两种情况,可以采用以下的方法:
1 2 3 4 5 6 7 8 9 10 11 12 | public static final int ANDROID_BUILD_GINGERBREAD = 9 ; public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6 ; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD) { setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE); } } |