Android当中的一些尺寸单位
Android当中的一些尺寸单位
手机尺寸
屏幕对角线的长度,单位为英寸(2.54cm)。
手机的分辨率
屏幕能够显示的像素数量,一般用在长方向上的数量*宽方向上的数量来表达。
手机的像素密度
pixels per inch,即ppi,也就是每英寸屏幕显示的像素数,像素密度越大,显示的画面细节就越丰富。
像素密度= {1+[(长度像素数-1)2+(宽度像素数-1)2]^(1/2)}/屏幕尺寸。(也就是对角线上每英寸显示的像素数了)
DPI
Dots Per Inch,每英寸所打印的点数或线数的缩写,用来表示打印机打印分辨率,但有时也会用dpi来代指ppi。
dpi(dot per inch)屏幕像素密度,指的是每英寸多少像素 px(pixels)。
手机的密度
Density,以160ppi为基准,即像素密度为160时Density为1。
ldpi | 120dpi | 0.75 |
mdpi | 160dpi | 1.0 |
hdpi | 240dpi | 1.5 |
xhdpi | 320dpi | 2.0 |
xxhdpi | 480dpi | 3.0 |
xxxhdpi | 640dpi | 4.0 |
px
pixels,像素,1px的长度就对应了屏幕一个像素点的大小。不同的手机显示的大小可能是不一样的。
dp/dip
dp 与 dip(device independent pixels)是一个意思,指的是设备独立像素,或者说设备无关像素,和设备屏幕有关系。
1dp = (dpi/160)px
1dp = density px
1px = 1/density dp
也就是用dp做单位,最终转换的像素数是有变化的,例如1dp,如果是160dpi,就是1px;120dpi,就是0.75px;320dpi,就是2px。
最终的作用区别也就是,在尺寸不变的情况下:以dp为单位,在不同质量屏幕的手机上显示的大小是不变的;而以px为单位的话,在差一点的手机上,也就是像素密度更小的情况下,显示的效果会变大,在好一点的手机上则会变小。所以我们在布局文件中,除了字体大小以sp为单位,其它都以dp为单位就好。
sp
scaled pixels(可缩放像素),主要用于字体大小的 ,与dp类似,但使用sp作为字体大小单位,字体大小会随着系统的字体大小改变,而dp作为单位的话就不会。
官方文档:https://developer.android.com/training/multiscreen/screendensities?hl=zh-cn
Android在运行的时候会自动将dp/dip/sp为单位的尺寸转换为以像素单位的值。