如何获得手机屏幕的高度和宽度

时间:2014-03-13 06:18:12

标签: android

我使用此代码查找屏幕的高度和宽度

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

但我1080 x 1920获得samsung galaxy S4800 x 1280获得Nexus 7。但我实际上需要原始的高度和宽度。怎么弄它。

4 个答案:

答案 0 :(得分:2)

我希望这可能会有所帮助

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
int screenHeight = metrics.heightPixels;
int screenWidth = metrics.widthPixels;
Log.i("MY", "Actual Screen Height = " + screenHeight + " Width = " + screenWidth);

答案 1 :(得分:1)

如果您的意思是不缩小状态栏和其他装饰的空间,请使用Display.getRealSize()

答案 2 :(得分:1)

尝试这种方式:

 final DisplayMetrics metrics = new DisplayMetrics(); 
        Display display = getWindowManager().getDefaultDisplay();     
        Method mGetRawH = null,mGetRawW = null;
        int realWidth=0,realHeight=0;

             // For JellyBeans and onward
            if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1){

                display.getRealMetrics(metrics);
                realWidth = metrics.widthPixels;
                realHeight = metrics.heightPixels;

            } else{
            // Below Jellybeans you can use reflection method 

            mGetRawH = Display.class.getMethod("getRawHeight");
            mGetRawW = Display.class.getMethod("getRawWidth");

            realWidth = (Integer) mGetRawW.invoke(display);
            realHeight = (Integer) mGetRawH.invoke(display);       
       }

    System.out.print(realWidth);
    System.out.print(realHeight);

答案 3 :(得分:0)

使用densityDpi值标准化像素值。这将给出DP(密度无关像素)方面的尺寸。

    int width =  (displayMetrics.widthPixels * 160)/displayMetrics.densityDpi; 
    int height = (displayMetrics.heightPixels * 160)/displayMetrics.densityDpi;