参考:
获取最小宽度DP:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int heightPixels = dm.heightPixels;
int widthPixels = dm.widthPixels;
float density = dm.density;
float heightDP = heightPixels / density;
float widthDP = widthPixels / density;
float smallestWidthDP = Math.min(widthDP, heightDP);//411.42856
Log.e(TAG, "heightPixels================= " + heightPixels);
Log.e(TAG, "widthPixels================= " + widthPixels);
Log.e(TAG, "density================= " + density);
Log.e(TAG, "heightDP================= " + heightDP);
Log.e(TAG, "widthDP================= " + widthDP);
Log.e(TAG, "smallestWidthDP================= " + smallestWidthDP);
// heightPixels================= 752
// widthPixels================= 1280
// density================= 1.0
// heightDP================= 752.0
// widthDP================= 1280.0
// smallestWidthDP================= 752.0
dp与px 、 dpi的转换
1dp = (dpi / 160)px
Android规定
- 当dpi=160时,1dp=1px,
- 当dpi=240时,1dp=1.5px,
依此类推,并且给各个范围的dpi取了简易的名字加以直观的识别,如120<dpi<=160,称作为mdpi,120<dpi<=240 称作hdpi,最终形成如下规则:
- ldpi(value <= 120 dpi)
- mdpi(120 dpi < value <= 160 dpi)
- hdpi(160 dpi < value <= 240 dpi)
- xhdpi(240 dpi < value <= 320 dpi)
- xxhdpi(320 dpi < value <= 480 dpi)
- xxxhdpi(480 dpi < value <= 640 dpi)
不同分辨率单位转换
ldpi 240*320 1dp=0.75px
mdpi 320*480 1dp=1px
hdpi 480*800 1dp=1.5px
xhdpi 720*1280 1dp=2px
xxhdpi 1080*1920 1dp=3px
图片大小与分辨率的研究:
https://github.com/Ablexq/MyBitmapSize
参考:
Android AutoLayout全新的适配方式 堪称适配终结者