通常,获取到的屏幕分辨率有两种需求,一种是屏幕的实际分辨率,另一种是受顶部或底部的虚拟导航栏占用产生的应用实际可用分辨率(相比实际分辨率减小了占用部分)。接下来代码示例下两种需求的获取方法:
一、获取屏幕实际分辨率
方法一:
WindowManager windowManager = getWindow().getWindowManager();
Point point = new Point();
windowManager.getDefaultDisplay().getRealSize(point);
//屏幕实际宽度(像素个数)
int width = point.x;
//屏幕实际高度(像素个数)
int height = point.y;
方法二:
WindowManager windowManager = getWindow().getWindowManager();
DisplayMetrics metrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getRealMetrics(metrics);
//屏幕实际宽度(像素个数)
int width = metrics.widthPixels;
//屏幕实际高度(像素个数)
int height = metrics.heightPixels;
二、获取屏幕可用分辨率
方法一:
WindowManager windowManager = getWindow().getWindowManager();
Display display = windowManager.getDefaultDisplay();
Point point = new Point();
display.getSize(point);
//屏幕可用宽度(像素个数)
int width = point.x;
//屏幕可用高度(像素个数)
int height = point.y;
方法二:
WindowManager windowManager = getWindow().getWindowManager();
Display display = windowManager.getDefaultDisplay();
//屏幕可用宽度(像素个数)
int width = display.getWidth();
//屏幕可用高度(像素个数)
int height = display.getHeight();
注意:以上我是在Activity中直接通过getWindow().getWindowManager()方法获取的WindowManager对象,若在Service等中获取需要通过Context,例如
WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);