android 像素
px (像素): 每一px对应屏幕上的一个点。
dip或dp(device independentpixels,设备独立像素):
一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px。但随着屏幕密度的改变,dp与px的换算会发生改变。一般为了支持WVGA、HVGA和QVGA推荐使用这个,不依赖像素。
sp(scaled pixels,比例像素):主要处理字体的大小,可以根据用户的字体大小首选项进行缩放。与缩放无关的抽象像素,它和dp很相似,但唯一的区别在于,Android系统允许用户自定义文字尺寸大小(小,正常,大,超大等),当文字尺寸是“正常”时,1sp=1dp=0.00625inch(英寸),当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625inch。
in(英寸):标准长度单位。
mm(毫米):标准长度单位。
pt(磅):标准长度单位,1/72英寸
dpi (dot per inch)每英寸像素多少
ppi:PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数(ppi与dpi的关系)
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
计算公式
dp与px
px=dp*(dpi/160)
dp=px/(dpi/160)
sp与px
px=sp*(dpi/160)
sp=px/(dpi/160)
dp=sp?简单来说当屏幕比率为标准时,dp等于sp,当屏幕比大,sp>dp,反之亦然