Android屏幕适配(smallestWidth限定符适配)

前言

Android的屏幕适配网上有很多种方法,我觉得使用smallestWidth(最小宽度) 限定符来进行适配是相对简单一点的,并且所需的dimens文件也不会特别多,这里我是参考了这篇博客


smallestWidth限定符原理

smallestWidth 限定符适配原理与屏幕分辨率限定符适配原理一样,系统都是根据限定符去寻找对应的 dimens.xml 文件。例如程序运行在最小宽度为 360dp 的设备上,系统会自动找到对应的 values-sw360dp 文件夹下的 dimens.xml 文件。区别就在于屏幕分辨率限定符适配是拿 px 值等比例缩放,而 smallestWidth 限定符适配是拿 dp 值来等比缩放而已。需要注意的是“最小宽度”是不区分方向的,即无论是宽度还是高度,哪一边小就认为哪一边是“最小宽度”。


smallestWidth限定符的好处

1、屏幕分辨率限定符适配是根据屏幕分辨率的,Android 设备分辨率一大堆,而且还要考虑虚拟键盘,这样就需要大量的 dimens.xml 文件。因为无论手机屏幕的像素多少,密度多少,90% 的手机的最小宽度都为 360dp,所以采用smallestWidth 限定符适配只需要少量 dimens.xml 文件即可。

2、屏幕分辨率限定符适配采用的是 px 单位,而 smallestWidth 限定符适配采用的单位是 dp 和 sp,可以对字体也进行适配。

3、屏幕分辨率限定符适配需要设备分辨率与 values-xx 文件夹完全匹配才能达到适配,而 smallestWidth 限定符适配寻找 dimens.xml 文件的原理是从大往小找,例如设备的最小宽度为 360dp,就会先去找 values-360dp,发现没有则会向下找 values-320dp,如果还是没有才找默认的 values 下的 demens.xml 文件,所以即使没有完全匹配也能达到不错的适配效果。


smallestWidth限定符的使用

1、在 Android Studio 中安装 ScreenMatch 插件

在这里插入图片描述

通过File -> Settings -> Plugins -> browse repositories搜索ScreenMatch插件并且安装,安装后重启Android Studio

2、在项目的res/values中需要有dimens.xml文件

这里可以有别人的dimens文件源码

可以直接复制,并且可以在这个基础上进行修改

3、生成其他尺寸的dimens.xml

插件安装好后,在项目的任意目录或文件上右键,选择 ScreenMatch 选项

它会以res/values/dimens.xml 文件作为基准进行生成,执行成功之后res目录下会自动生成一堆dimens文件

在这里插入图片描述

4、根据设计图填写最小宽度基准值,并且填写需要适配的最小宽度dp

插件默认的最小宽度基准值为 360dp,适配的设备最小宽度为320,360,384,392.7272,400,410,411.4285,432,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365(包含了平板和 TV )生成的文件,但实际情况要根据设计图和需求设置。

在这里插入图片描述

我们需要对该文件进行修改

打开配置文件,修改下图中 1、3、4 的值即可。(图中单位均为 dp)

1、最小宽度基准值,填写设计图的最小宽度值即可。(默认为360dp)

2、插件默认适配的最小宽度值,即默认情况下会生成如下值的 dimens.xml 文件。

3、需要适配的最小宽度值(如果是小数,则保留4位小数),即你想生成哪些 dimens.xml 文件。(不填就是按照步骤2中的宽度值)

4、忽略不需要适配的最小宽度值,即忽略掉插件默认生成的 dimens.xml 文件。

在这里插入图片描述

配置文件修改完成后,重新执行第 3 步,生成新的 dimens.xml 文件。

5、在xml中使用

原本的100dp则改为@dimen/dp_100(具体看res/values/dimens.xml文件,适配以该文件为基准,正常选择的模拟器也是360dp,即780*1280px)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值