我知道这是一个重复的问题,但自从Android 2.3+ (Gingerbread)以来,还没有一个明确的答案发布和接受。
我有代码检索当前屏幕方向在我的Froyo手机和我的蜂窝平板电脑。我的问题是:
- 我在姜饼之前的版本中检索到的两个方向,我应该用哪一个?
- 我应该使用什么方法来设置方向/旋转锁定它到位?
这是我现在拥有的方法(检索,但不设置)
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