大神Github:https://github.com/JessYanCoding/AndroidAutoSize.git
px = density*dp; //像素
density = dpi/160;//像素密度
dpi = √(x2+y2)/屏幕尺寸;//dot per inch 每英寸像素點數(shù)
width_dp = width_px/density;//寬度dp
height_dp = height_px/density;//高度dp
由于px = density*dp,dp為設計圖固定值,想要px寬度/高度恒定,那么只有改變density變量。
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
? ? ? ? int densityDpi = displayMetrics.densityDpi;
? ? ? ? float scaledDensity = displayMetrics.scaledDensity;
? ? ? ? int widthPixels = displayMetrics.widthPixels;
? ? ? ? int heightPixels = displayMetrics.heightPixels;
? ? ? ? float xdpi = displayMetrics.xdpi;
? ? ? ? float ydpi = displayMetrics.ydpi;
? ? ? ? double size = Math.sqrt((widthPixels / xdpi) * (widthPixels / xdpi) + (heightPixels / ydpi) * (heightPixels / ydpi));
? ? ? ? double dpi = Math.sqrt(widthPixels * widthPixels + heightPixels * heightPixels) / size;
Log.i("Simon","densityDpi = " + densityDpi
+"? scaledDensity = " + scaledDensity
+"? widthPixels = " + widthPixels
+"? heightPixels = " + heightPixels
+"? screenSize = " + screenSize
+"? screenDpi = " + screenDpi
);