How can I get android Honeycomb system's scree

2019-01-24 19:31发布

my code:

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);

when I run this program in android Honeycomb system,the output is 800 and 1232 but the device's screen is 800_1280,hao can I get it? thanks.

3条回答
Lonely孤独者°
2楼-- · 2019-01-24 19:41

This piece of code works for me (if you don't mind to use undocumented methods):

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);
查看更多
放我归山
3楼-- · 2019-01-24 19:47

Actually device full screen width=800 and height=1280 (including status bar, title bar). If you run your code to get display size, the system will not include status bar height and title bar height, so you will get height as 1232 (1280-(status bar height + title bar height)).

查看更多
混吃等死
4楼-- · 2019-01-24 19:51

1280 x 752 - landscape 800 x 1232 - portrait

This 48 px are for the Andriod default notification bar...

查看更多
登录 后发表回答