安卓根据不同的机型需要实现多屏适配,那就需要获取当前屏幕的尺寸、密度。
一、Java代码
Display display = getWindowManager().getDefaultDisplay();
display.getWidth();//返回px值
display.getHeight();//返回px值
display.getRotation();返回0或1,0表示竖屏,1表示横屏
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float density = outMetrics.density;//屏幕密度和160dpi的比值
int densityDpi=outMetrics.densityDpi;//屏幕密度,指单位长度上的像素点数,单位dpi
int height = outMetrics.heightPixels;//高度像素
int width = outMetrics.widthPixels;//宽度像素
float scaledDensity=outMetrics.scaledDensity;//屏幕密度和160dpi的比值,和outMetrics.density一样
float xdpi=outMetrics.xdpi;//屏幕密度,指x轴单位长度上的像素点数
float ydpi=outMetrics.ydpi;//屏幕密度,指y轴单位长度上的像素点数
System.out.println("density------->>"+density
+"\r\ndensityDpi-------->>"+densityDpi
+"\r\nheight----->>"+height
+"\r\nwidth----->>"+width
+"\r\nscaledDensity-------->>"+scaledDensity
+"\r\nxdpi---------->>"+xdpi
+"\r\nydpi----------->>"+ydpi);
二、看看上面两者的关系
Sdk代码片段代码
public void getMetrics(DisplayMetrics outMetrics) {
outMetrics.widthPixels = getWidth();
outMetrics.heightPixels = getHeight();
outMetrics.density = mDensity;
outMetrics.densityDpi = (int)((mDensity*DisplayMetrics.DENSITY_DEFAULT)+.5f);
outMetrics.scaledDensity= outMetrics.density;
outMetrics.xdpi = mDpiX;
outMetrics.ydpi = mDpiY;
}
//仅仅是将Display的内部值赋给了DisplayMetrics的属性值