Android DisplayMetrics возвращает неправильный размер экрана в пикселях на ICS

Я пробовал это....

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int fullscreenheight = metrics.heightPixels;
int fullscreenwidth = metrics.widthPixels;

и....

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

Дисплей Gnex имеет разрешение 720×1280. Возвращаемый результат для ширины/высоты (конечно, в зависимости от ориентации) никогда не бывает 1280. Я подумал, что это может иметь какое-то отношение к экранной панели навигации в Ice Cream Sandwich, поэтому я скрываю это с помощью:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

...и затем запустил поток, который постоянно регистрирует высоту/ширину экрана. Даже после того, как панель навигации ICS полностью исчезла ... размер экрана никогда не сообщал значение 1280. Я бы получил такие цифры:

width  = 720
height = 1184

Как получить истинное разрешение экрана устройства в ICS?

Причина, по которой мне нужно это значение, заключается в том, что мое приложение воспроизводит видео, и я хотел бы, чтобы видео занимало весь экран, когда устройство находится в альбомной ориентации. Теперь я знаю, о чем вы думаете, почему бы просто не указать для видеопросмотра значение «match_parent» для высоты/ширины? Причина в том, что мои видео имеют несколько соотношений сторон, и я хотел бы иметь возможность рассчитать правильный размер видео в зависимости от всей ширины экрана.

21
задан dell116 12 June 2012 в 21:08
поделиться