下面是听完 Mars 老师的同名课程(长度单位与内外边距)后的总结:
在安卓中主要用到的长度单位有 :px —— 像素单位,dp —— 设备无关像素单位,sp —— 可变像素;下面做一下小小的解释
1.px —— 像素
每台安卓设备都会有自己的分辨率,分辨率会直接与像素相关,如 854x480像素 这样的数据就表明这台设备屏幕上的像素点一共有 854x480 个
如果在安卓开发中直接使用 px 作为 view(控件)的单位,那么在不同的设备之间移植就会出现不同的显示结果
所以在这里引入一个叫做 dpi 的概念,也就是 dots per inch —— 每英寸像素点个数,借助这样的一个概念就可以实现不同分辨率的设备上在使用同一个应用是效果一致
2.dp=dip —— Device Independent Pixels
先介绍一个叫做 dp 的概念,dp,也就是dip,设备独立像素,就是一个为了安卓应用的效果在不同分辨率设备上达到一致而产生的概念,有下面的一个换算公式:
px = dp * ( dpi / 160)
注意:上面又出现了 1.px 中提到的 dpi ,由于 dpi 是每英寸的像素数,所以根据 dpi 和 dp 的乘积就可以得到不同分辨率下相应的实际像素点数,通过这样的设置,就可以在代码中设置一个 dp 值,然后在不同分辨率的设备中使用的是不同的像素点数,从而达到一致的效果。
3.sp —— scaled pixels 可变像素
在安卓中设置字体大小一般用 sp,这是由于安卓下可以通过设置来改变设备的字体大小,如设置成 normal,small,huge 等,所以设置字体时用 sp,就可以和安卓系统保持一致。