获取设备屏幕分辨率

问题描述 投票:0回答:7

我使用以下方法来获取屏幕尺寸:

public static Point getScreenSize(Context context)
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    int w = wm.getDefaultDisplay().getWidth();
    int h = wm.getDefaultDisplay().getHeight();
    return new Point(w, h);
}

在我的三星 Galaxy s6 上,此方法返回 1080x1920...尽管我的设备分辨率为 1440x2560。

为什么?有没有更好的方法来获得在较新的手机上也可靠的屏幕分辨率?

编辑

我在服务中需要这个方法!我没有需要帮助的视图/活动,只有应用程序上下文!我需要真实的像素

android resolution screen-resolution
7个回答
8
投票

获取屏幕分辨率的最佳方法是从

DisplayMetrics
:

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

7
投票

如果您的目标 API >= 17,请尝试使用

getRealSize
类的
Display
方法:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
wm.getDefaultDisplay().getRealSize(size);
String resolution = size.x + "x" + size.y;

对我来说,它有效。


2
投票

使用这个:

private static String getScreenResolution(Context context)
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    DisplayMetrics metrics = new DisplayMetrics();
    display.getMetrics(metrics);
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;

    return "{" + width + "," + height + "}";
}

1
投票

Use this.

DisplayMetrics metrics; 
int width = 0, height = 0;

In your onCreate method.

 metrics = new DisplayMetrics();        
 getWindowManager().getDefaultDisplay().getMetrics(metrics);


 height = metrics.heightPixels;     
 width = metrics.widthPixels;

1
投票

API 返回应用程序可以使用的像素数,因此这是正确的结果。


0
投票

试试这个:

 Display mDisplay = context.getWindowManager().getDefaultDisplay();

 mDisplay.getWidth();
 mDisplay.getHeight();

请注意,此代码使用 已弃用的 API。


0
投票

您需要使用

getRealMetrics
方法,它需要考虑NavigationBar的高度大小:

    public static String getScreenResolution(Context context) {
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics realMetrics = new DisplayMetrics();
        windowManager.getDefaultDisplay().getRealMetrics(realMetrics);
        int realWidth = realMetrics.widthPixels;
        int realHeight = realMetrics.heightPixels;

        return "Full screen resolution: " + realWidth + "x" + realHeight;
    }
© www.soinside.com 2019 - 2024. All rights reserved.