Get screen resolution of device

核能气质少年 提交于 2019-12-07 05:11:06

问题


I used following method to get the screen size:

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

On my samsung galaxy s6, this method returns 1080x1920... Although my device has a resolution of 1440x2560.

Why? Is there a better method to get the screen resolution that works on newer phones reliable as well?

EDIT

I need this method in a service! I don't have a view/activity for help, only the application context! And I need the REAL pixels


回答1:


The best way to get your screen resolution is from DisplayMetrics :

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



回答2:


If you are targeting for API >= 17, try with the getRealSize method of the Display class:

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

for me, it worked.




回答3:


Use this one:

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 + "}";
}



回答4:


The API returns the number of pixels an app can use, so this is the correct result.




回答5:


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;



回答6:


Try this:

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

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

Note that this code uses deprecated APIs.



来源:https://stackoverflow.com/questions/38615102/get-screen-resolution-of-device

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!