Как я могу получить ширину и высоту экрана системы Android Honeycomb? - PullRequest
3 голосов
/ 22 августа 2011

мой код:

Display display = activity.getWindowManager().getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);

System.out.println("screen width:"+displayMetrics.widthPixels);
System.out.println("screen heigth:"+displayMetrics.heightPixels);

когда я запускаю эту программу в системе Android Honeycomb, вывод будет 800 и 1232, но экран устройства будет 800_1280, ха, могу ли я его получить?спасибо.

Ответы [ 3 ]

6 голосов
/ 20 января 2012

Этот кусок кода работает для меня (если вы не против использовать недокументированные методы):

Display d = getWindowManager().getDefaultDisplay();
int width, height;

Method mGetRawH;
Method mGetRawW;
try {
    mGetRawH = Display.class.getMethod("getRawWidth");
    mGetRawW = Display.class.getMethod("getRawHeight");
    width = (Integer) mGetRawW.invoke(d);
    height = (Integer) mGetRawH.invoke(d);
} catch (NoSuchMethodException e) {
    e.printStackTrace();
} catch (IllegalArgumentException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

//You should care about orientation here
int o = getResources().getConfiguration().orientation;
if (o == Configuration.ORIENTATION_PORTRAIT) {
    if (width > height) {
        int tmp = width;
        width = height;
        height = tmp;
    }
} else if (o == Configuration.ORIENTATION_LANDSCAPE) {
    if (width < height) {
        int tmp = width;
        width = height;
        height = tmp;
    }
}

Log.d("d", "w=" + width + " h=" + height);
0 голосов
/ 06 апреля 2013

1280 x 752 - пейзаж 800 x 1232 - портрет

Эти 48 пикселей предназначены для панели уведомлений Andriod по умолчанию ...

0 голосов
/ 22 августа 2011

На самом деле устройство на весь экран width=800 and height=1280 (including status bar, title bar). Если вы запустите свой код, чтобы получить размер экрана, система не будет включать в себя высоту строки состояния и высоту строки заголовка, поэтому вы получите height as 1232 (1280-(status bar height + title bar height)).

...