参考:https://www.cnblogs.com/libertycode/p/5247421.html
https://blog.youkuaiyun.com/u012138032/article/details/52447143
px即像素,以px为单位:
在同一像素密度的情况下,数值越大,则组件物理长度越大。
在同一手机屏幕情况下,选择高清模式(每inch包含更多像素,每inch含有更多组件)时,组件图像物理长度反而变小。
dp(Density-Independent Pixels与像素密度无关的“像素”):
dp=160*px/dpi;(dpi:dots per inch, 所以dp是长度单位) 1inch=160dp
在同一手机屏幕上,无论高清模式还是低清模式,组件物理尺寸相同,包含的像素与清晰度(像素密度)成正比。
dip即dp
sp(scaled pixels按比例放缩的像素,通常用于文字尺寸):
和dp很相似,区别在于Android系统允许用户自定义文字尺寸(小,正常,大,超大等),当文字尺寸是“正常”时,1sp=1dp=0.00625inch(英寸),当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625inch。
pt:
1pt=1/72英寸=0.035厘米;
dpi:dots per inch(每英寸点数,或者说每英寸像素数目 更易懂),由设备决定,是写死的,可以通过context.getResources().getDisplayMetrics().densityDpi获取到。当然,也可以通过以下方法算出:
dpi=横向分辨率/横向英寸数=纵向分辨率/纵向英寸数
Google 规定的屏幕密度列表:
- ldpi (low) ~120dpi
- mdpi (medium) ~160dpi
- hdpi (high) ~240dpi
- xhdpi (extra-high) ~320dpi
- xxhdpi (extra-extra-high) ~480dpi
- xxxhdpi (extra-extra-extra-high) ~640dpi