android – 如何获得真正的屏幕高度和宽度?

DisplayMetrics metrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;

我使用这些代码来获得屏幕的高度和宽度

我的Nexus7的屏幕高度应该是1280

但它返回1205 …

和我的minSdkVersion是8级

所以我不能使用这些方法:

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

现在,我应该如何获得正确的屏幕尺寸?

编辑:

if (Build.VERSION.SDK_INT >= 11) {
        Point size = new Point();
        try {
            this.getWindowManager().getDefaultDisplay().getRealSize(size);
            screenWidth = size.x;
            screenHeight = size.y;
        } catch (NoSuchMethodError e) {
            Log.i("error", "it can't work");
        }

    } else {
        DisplayMetrics metrics = new DisplayMetrics();
        this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        screenWidth = metrics.widthPixels;
        screenHeight = metrics.heightPixels;
    }

使用它工作!

我认为这将工作。诀窍是你必须使用:

display.getRealSize(size);

display.getSize(size);

要处理你的API 8编码问题做这样的事情:

try { 
    display.getRealSize(size);
    height = size.y; 
} catch (NoSuchMethodError e) {
    height = display.getHeight();
}

只有更多的最近的API设备将有屏幕导航按钮,因此需要新的方法,旧的设备将抛出异常,但不会有屏幕导航,因此旧的方法是好的。

如果它需要说:只是因为你的项目的最小API级别为8,并不意味着你必须在该级别编译。我也使用级别8为最小,但我的项目大多是编译在级别13(3.2),让他们访问很多新的方法。

http://stackoverflow.com/questions/14341041/how-to-get-real-screen-height-and-width

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android – 如何获得真正的屏幕高度和宽度?