我使用以下方法来获取屏幕尺寸:
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。
为什么?有没有更好的方法来获得在较新的手机上也可靠的屏幕分辨率?
编辑
我在服务中需要这个方法!我没有需要帮助的视图/活动,只有应用程序上下文!我需要真实的像素
获取屏幕分辨率的最佳方法是从
DisplayMetrics
:
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
如果您的目标 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;
对我来说,它有效。
使用这个:
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 + "}";
}
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;
API 返回应用程序可以使用的像素数,因此这是正确的结果。
试试这个:
Display mDisplay = context.getWindowManager().getDefaultDisplay();
mDisplay.getWidth();
mDisplay.getHeight();
请注意,此代码使用 已弃用的 API。
您需要使用
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;
}