2013-08-25 5 views
2

Я хочу получить размер экрана Android-устройства. Я использую эти 3 кода для этого, но они дают мне размер активности; который не имеет размера высоты столбцов состояния. На планшете с высотой 800 пикселей этот код дает 764px. 36px переходит в строку состояния внизу.Полностью размер экрана Android

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



    Rect rectgle= new Rect(); 
    Window window= getWindow(); 
    window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
    int height2= rectgle.bottom; 



    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    int actualHeight = metrics.heightPixels; 

Но мне нужен код, который дает мне фактический размер экрана. Не деятельность. может ли кто-нибудь помочь мне в этом? Спасибо.

ответ

2

Для Уровня 17 API и выше вы можете использовать getRealSize()

https://developer.android.com/reference/android/view/Display.html#getRealSize(android.graphics.Point)

+1

Это немного noobish, но, на самом деле, я не мог понять, как создать объект Display в своем классе? Конструктора нет. –

+0

вы можете собирать экранный объект из оконного менеджера через это Дисплей display = getWindowManager(). GetDefaultDisplay(); –

+0

Да. Я нашел 10 секунд до вашего ответа =) Да. Это сделано сейчас. Спасибо. –

1

Этот фрагмент даст вам высоту строки состояния.

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 
int contentViewTop= 
window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
int TitleBarHeight= contentViewTop - StatusBarHeight; 

Таким образом, общая высота экрана: -

height = height+TitleBarHeight; 

оригинальный ответ here. Также обратите внимание, что это не будет работать в onCreate, чтобы этот код выполнялся.

+0

Я видел этот ответ. Проблема в том, что устройство - это ТАБЛЕТКА, а не телефон. Таким образом, строка состояния находится внизу, а не сверху. Этот код дает мне 0px для StatusBarHeight. Когда я изменил ** int StatusBarHeight = rectgle.top; ** код на ** int StatusBarHeight = rectgle.bottom; ** теперь я получаю активностьHeight. Который составляет 764px. Итак, чтобы получить StatusBarHeight; Мне все еще нужен фактический размер экрана. –

Смежные вопросы