Это похоже на ошибку в документации. Если мы посмотрим на фактический код, который используется для расчета размера экрана, мы увидим, что экран 600x1024 с разрешением 160 т / д действительно будет рассматриваться как xlarge.
Не верь мне на слово. Реализация в WindowManagerService.computeNewConfigurationLocked () (предупреждение для медленного JavaScript). Интересные моменты заключаются в следующем. Размер экрана в пикселях масштабируется в зависимости от плотности:
longSize = (int)(longSize/dm.density);
shortSize = (int)(shortSize/dm.density);
Для экрана с разрешением mdpi (160 точек на дюйм) плотность dm.density будет 1,0. Для HDDP (240 точек на дюйм) это будет 1,5. В нашем случае у нас есть экран MDP. Таким образом, после выполнения этого кода longSize == 1024
и shortSize == 600
. Вскоре мы достигаем этого кода:
// What size is this screen screen?
if (longSize >= 800 && shortSize >= 600) {
// SVGA or larger screens at medium density are the point
// at which we consider it to be an extra large screen.
mScreenLayout = Configuration.SCREENLAYOUT_SIZE_XLARGE;
} else if ( // ...
, что с нашими значениями longSize
и shortSize
означает, что mScreenLayout
будет назначено Configuration.SCREENLAYOUT_SIZE_XLARGE
, другими словами, что экран будет считаться «большим». Интересно отметить, что если бы экран был на один пиксель меньше на короткой стороне, он считался бы «большим».
Итак, вы правильно читаете документацию, но, насколько я вижу, документация неверна, и ваш эмулятор в порядке.