Android中dp、sp、px、pt之间的换算关系
换算公式
1 dp = (dpi/160) px;
1 in = 72 pt = dpi dp;
1 pt = dpi/72 dp;
当dpi为160(每英寸160像素点)
- 1dp = 1px = 1sp
- 1in = 72pt = 160 dp
- 1pt = 2.22 dp;
名词解释
- px:像素,也就是屏幕上的点;
- in:英寸,长度单位;
- pt:磅,长度单位,1pt=1/72in;
- dp/dip:一种基于屏幕密度的抽象单位,通常用于图形的长度单位;
- sp:与dp类似,通常用于字体的长度单位。
- dpi:”dot per inch”,每英寸长度内的像素点;
为什么是你———160 ?
- Google的官方文档中有给出了解释,因为第一款Android设备(HTC的T-Mobile G1)是属于160dpi的。
这个解释是不是有些牵强,哈哈(~ ̄▽ ̄)~ ,看下面嘛 Android Design [1] 里把主流设备的 dpi 归成了四个档次,120 dpi、160 dpi、240 dpi、320 dpi
实际开发当中,我们经常需要对这几个尺寸进行相互转换(比如先在某个分辨率下完成设计,然后缩放到其他尺寸微调后输出),一般按照 dpi 之间的比例即 2:1.5:1:0.75 来给界面中的元素来进行尺寸定义。
也就是说如果以 160 dpi 作为基准的话,只要尺寸的 DP 是 4 的公倍数,XHDPI 下乘以 2,HDPI 下乘以 1.5,LDPI 下乘以 0.75 即可满足所有尺寸下都是整数 pixel 。
但假设以 240 dpi 作为标准,那需要 DP 是 3 的公倍数,XHDPI 下乘以 1.333,MDPI 下乘以 0.666 ,LDPI 下除以 2
而以 LDPI 和 XHDPI 为基准就更复杂了,所以选择 160 dpi
如有错误请指正;
转载请注明出处。