跨平台版本锁定屏幕方向的正确方法



我知道这是一个重复的问题,但自从Android 2.3+ (Gingerbread)以来,还没有一个明确的答案发布和接受。

我有代码检索当前屏幕方向在我的Froyo手机和我的蜂窝平板电脑。我的问题是:

  1. 我在姜饼之前的版本中检索到的两个方向,我应该用哪一个?
  2. 我应该使用什么方法来设置方向/旋转锁定它到位?

这是我现在拥有的方法(检索,但不设置)

protected void lockCurrentOrientation() {
    int orientation;
    Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD)
    {
        orientation = getResources().getConfiguration().orientation;
        Log.d(LogTag, "Orientation via getConfiguration " + String.valueOf(orientation));
        // Not working - reporting -1 (SCREEN_ORIENTATION_UNSPECIFIED)
        // orientation = getRequestedOrientation();
        // Log.d(LogTag, "Orientation via getRequestedOrientation " + String.valueOf(orientation));
        orientation = display.getOrientation();
        Log.d(LogTag, "Orientation via WindowManager " + String.valueOf(orientation));
    }
    else
    {
        orientation = display.getRotation();
        Log.d(LogTag, "Orientation via Display.getRotation " + String.valueOf(orientation));
    }
}

如果您打算以旧版本为目标,那么使用getOrientation(),如果您打算以新版本为目标,那么使用getRotation()。这里的目标,我指的是manifest文件中目标sdk

相关内容

最新更新