Android 3.2摩托罗拉Xoom定位更改

时间:2012-09-10 14:39:49

标签: android screen-orientation motorola orientation-changes xoom

我希望有两种不同的方向模式,具体取决于设备 - 如果设备屏幕为超大,方向应为 LANDSCAPE ,如果设备屏幕较小,则方向应为 PORTRAIT

我做了以下检查:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Set orientation for tablets and phones
    if (isXLarge()) {     
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    } else {    
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    setContentView(R.layout.activity_main); 
}

活动的清单条目是:

<activity 
    android:configChanges="keyboardHidden" 
    android:launchMode="singleTop" 
    android:theme="@android:style/Theme.NoTitleBar" 
    android:name=".MyActivity"/>

它在手机上运行良好,但在摩托罗拉Xoom平板电脑上使用Android 3.2 ,这无效。

如果我们假设平板电脑在纵向模式下处于物理状态,则会发生以下一系列操作:

  1. 以纵向模式创建并显示活动 - 以半秒显示
  2. 活动在横向模式下被销毁并重新创建。
  3. 问题在于,平板电脑当前在物理上被保持的方向始终存在中间转换,然后以所需方向重新创建活动。

    感谢您提供有关此问题的任何信息或建议,如果您需要更多详细信息,请告诉我。

    方法isXLarge()正确返回显示类型

1 个答案:

答案 0 :(得分:1)

如果您自己处理方向更改,那么更好的方法是在活动清单中声明android:configChanges="orientation"并覆盖onConfigurationChanged()方法。在您的情况下,您可以使用onCreate()方法设置方向,但如果用户实际更改方向,系统将更改方向。

我建议您覆盖onConfigurationChanged()并实施代码以提供正确的方向。