Android Res下的values-sw360dp,values-sw480dp,values-swxxxdp到底是什么东西_wilanzai的博客-CSDN博客 Android中的像素密度,屏幕密度,屏幕大小,分辨率,ldpi,mdpi,xhdpi,xxhdpi_lidongxiu0714-CSDN博客_像素密度
private void getScreenInfo() {
// 获取屏幕分辨率
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高
Log.e( "屏幕分辨率", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 获取像素密度和屏幕密度
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 像素密度(每寸像素:120/160/240/320)
float xdpi = dm.xdpi; //X轴方向的像素密度
float ydpi = dm.ydpi; //Y轴方向的像素密度
Log.e("XY轴方向上的像素密度", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e( " 像素密度和屏幕密度", "density=" + density + "; densityDPI=" + densityDPI);
screenWidth = dm.widthPixels; // 屏幕宽
screenHeight = dm.heightPixels; // 屏幕高
Log.e("屏幕分辨率", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 获取屏幕密度(方法3)
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density;
densityDPI = dm.densityDpi;
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Log.e("屏幕XY轴方向上的像素密度", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e("屏幕像素密度和屏幕密度", "density=" + density + "; densityDPI=" + densityDPI);
int screenWidthDip = dm.widthPixels;
int screenHeightDip = dm.heightPixels;
Log.e("屏幕XY轴方向上的像素密度", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);
screenWidth = (int)(dm.widthPixels * density + 0.5f);
screenHeight = (int)(dm.heightPixels * density + 0.5f);
Log.e(" 屏幕分辨率", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
}
在Android项目res的目录下,会有values-sw360这样的文件夹,一直以来都以为这是对应手机的屏幕密度dpi。今天经过一番研究发现并不是这样的。其实是指对应手机屏幕dp宽度。
- 比如三星手机的宽是1080px 密度是2.625 那么它的宽度dp = 1080/2.625= 411
- 那么红米note4的宽是1080px 密度是3.0 那么它的宽度dp = 1080/3 = 360
所以如果宽度是120dp的控件在屏幕中所占的比例也就不同呢