屏幕适配

dpi 是代表设备的尺寸,是每英寸的像素点的个数 1inch = 2.45cm

320*240像素,长2英寸,宽1.5英寸
那么它的 320/2= 160 dpi 就是说一英寸中有160个点

dip是device independence pixel 设备独立像素,是谷歌定义的一种新的单位
dip和px在不同dpi值的手机上 存在转换关系

为了方便书写,那么这个160 对应mdpi 你可以看作是160dpi ,
所有dpi的值近似为 160 的都可以归为mdpi
这也是为什么谷歌不起名叫160dpi的原因
因为手机型号很多,总结出常用的几种
mdpi - 160dpi 320480 1dp - 1px (谷歌定义这个为基准)
hdpi -240dpi 480
800 1dp - 240/160=1.5px
xhdpi - 320dpi 720*1280 1dp-2px
xxhdpi - 480dpi

转换关系是根据当前设备的 dpi值来计算的,当前dpi值/基准值,然后基准是1dp-1px
那么当前设备的对应关系就是 1dp - 1px * (当前dpi/160dpi)

如果有特殊 分辨率 的手机,可以单独定义 value目录
value-hdpi-960*540

比如我们在720*1280 属于320dpi - xhdpi 的手机中要设置180dp,这时这个位置在垂直居中

那么我们在480*800手机中 hdpi 中 要 240px = 160dp 才能居中
180/160 = 1.125 所以在 xhdpi设置的dp值,需要除以1.125才能在hdpi中显示的相对位置相等

如何计算dpi 呢,一般手机大小是按对角线的长度来的
比如 720*1280的手机 4.7英寸的屏幕
根据勾股定理得到对角线像素 1469,
1469/4.7 = 312ppi 那么 也是 312dpi
所以它被归结为类似hdpi

比如红米2是312ppi 它被归为320dpi - xhdpi 的行列
那么中兴有个手机是 480*854 4.5英寸的 就是218ppi -- 他就是240dpi - hdpi的行列

那么我们此时写了一个margintop为180dp在红米上(在xhdpi)1dp - 2px
那么在中兴手机 (hdpi)写多少dp呢? 1dp - 1.5px

此时在红米手机上是垂直居中的 dp 是180dp
那么在中兴手机上 160dp

所以你xhdpi 写1dp 在 hdpi要写 1/1.125 dp~0.888dp

xxhdpi 是

当然还有ppi pixel per inch 每英寸多少像素(这个和dpi的值是相等的,其实概念也一样)

你可能感兴趣的:(屏幕适配)