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

3

我使用这段代码来查找屏幕的高度和宽度

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

对于三星Galaxy S4,我得到的分辨率是1080 x 1920,对于Nexus 7,则是800 x 1280。但实际上我需要的是原始的高度和宽度。如何获得它?


这是正确的链接:http://www.gsmarena.com/samsung_i9500_galaxy_s4-5125.php - Yashdeep Patel
1
但实际上,Nexus 7比三星Galaxy S4更大。 - user3413759
4个回答

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
尝试这种方式:

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

这个逻辑给我提供了在设备规格中定义的完美宽度和高度。 - M D

1
如果您指的是不减去状态栏和其他装饰物的大小,则使用Display.getRealSize()

0

使用densityDpi值来规范化像素值。这将以DP(密度无关像素)的形式给出尺寸。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接