如何获得包括软键盘大小的屏幕分辨率?

时间:2016-06-15 13:56:59

标签: android

我的手机是HUAWEI NXT-AL10,我可以从系统设置页面看到它的分辨率是 1080 x 1920 但是当我尝试编写如下代码来检索其屏幕分辨率时,值 1080 x 1794 ,我想也许它不包括软键盘的大小。那么如何获得分辨率就像设置页面所说的那样(1080 x 1920)?

    DisplayMetrics metric = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metric);
    int width = metric.widthPixels;
    int height = metric.heightPixels;

2 个答案:

答案 0 :(得分:2)

下面的代码可以为您提供所需的内容

Point size = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(size);
iWidth = size.x;
iHeight = size.y;

Log.i(TAG, "Screen real size (pixels) :width = " + iWidth);
Log.i(TAG, "Screen real size (pixels) :height = " + iHeight);

请注意,这需要API 17及更高版本

答案 1 :(得分:1)

感谢@SimonH的回答,我添加了更多逻辑来支持API 16及更低版本,这里仅供您参考:

private void initScreenSize() {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        Point size = new Point();
        getWindowManager().getDefaultDisplay().getRealSize(size);
        mScreenWidth = size.x;
        mScreenHeight = size.y;
    } else {
        Display display = getWindowManager().getDefaultDisplay();

        try {
            Method getHeight = Display.class.getMethod("getRawHeight");
            Method getWidth = Display.class.getMethod("getRawWidth");
            mScreenWidth = (Integer) getHeight.invoke(display);
            mScreenHeight = (Integer) getWidth.invoke(display);
        } catch (Exception e) {
            mScreenWidth = display.getWidth();
            mScreenHeight = display.getHeight();
        }
    }
}