dp 和 sp

dp与像素无关, Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时,1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。

Android 布局文件适配

Android 分辨率

1592361871473f993ade9a3374f81bac30bfa55b45f9c

如果在不同的分辨率上布局文件不一致,我们可以在res目录下,新建一个文件夹,如:layout-1080x720 数值大的在前面

Android使用最小宽度限定符

Android开发中最头疼的问题之一就是兼容不同尺寸和分辨率的设备。在使用最小宽度限定符时这个最小宽度的该如何计算。
最小宽度限定符可以使用一个与屏幕像素密度无关为单位(dp)的数值区分出的不同设备,以应用不同的资源。
如下图中values-sw600dp的sw表示最小宽度,那么600dp是如何确定的呢?

举个例子:一般情况下我们可以容易知道设备的分辨率和尺寸的参数。比如现在有平板A(分辨率1280720px,尺寸是8inch), 手机B(分辨率19201080px,尺寸是5.7inch),手机C(分辨率1280*720px,尺寸是5inch)。通过下面的屏幕像素密度的计算公式,我们可以分别计算出他们的屏幕像素密度:

平板A约为184dpi,手机B约为386dpi,手机C约为293dpi。
接下里需要注意的是,最小宽度是不考虑横屏或竖屏的,也就是说最小宽度是设备屏幕四条边里最短的那两条边。
如果需要考虑横竖屏那么可以加入屏幕方向限定符,这不在我们讨论之列。那么接下来我们取最短边的像素数,并通过下面的公式计算最小宽度(dp): 平板A约为626dp,手机B约为448dp,手机C约为393dp。

Android Studio 插件

在Android Studio插件市场,我们可以找到ScreenMatch来自动生成dimen.xml文件。

github地址:GitHub - mengzhinan/PhoneScreenMatch: 屏幕适配方案