由于,Android版本碎片化的问题,导致很多老接口在新版本中获取的数据都不准确,本人结合一些网上的资料,和实际运行的结果,写了一个兼容的API,能够保证获取到正确的屏幕分别率。
public static Point getDisplaySize(Context context) {
if (context == null) {
return new Point(0, 0);
}
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
if (display != null) {
DisplayMetrics dm = new DisplayMetrics();
int version = Build.VERSION.SDK_INT;
Point point = new Point();
display.getMetrics(dm);
point.x = dm.widthPixels;
if (version < Build.VERSION_CODES.HONEYCOMB_MR2) {
point.y = dm.heightPixels;
} else if (version == Build.VERSION_CODES.HONEYCOMB_MR2) {
try {
Method mt = display.getClass().getMethod("getRealHeight");
point.y = (Integer) mt.invoke(display);
} catch (Exception e) {
e.printStackTrace();
}
} else if (version > Build.VERSION_CODES.HONEYCOMB_MR2 &&
version < Build.VERSION_CODES.JELLY_BEAN_MR1) {
try {
Method mt = display.getClass().getMethod("getRawHeight");
point.y = (Integer) mt.invoke(display);
} catch (Exception e) {
e.printStackTrace();
}
} else {
display.getRealMetrics(dm);
point.x = dm.widthPixels;
point.y = dm.heightPixels;
}
return point;
}
return new Point(0, 0);
}