使用ScreenMatch实现SmallWidth屏幕适配,用像素值px实现布局

       如果项目中使用SmallWidth适配,而设计师给的标注又是px的,我们只要调整base_dp的值,再使用ScreenMatch生成该base_dp对应的一系列values-swXX,就可以在布局中直接写像素对应的dp_xx

       举个例子:比如设计师的设计图纸是720x1280的,我们就可以将base_dp的值设为720,即base_dp = 720,右键,点击ScreenMatch,生成base_dp=720对应的valuess-swXX文件。现在有个控件的宽是72px,就可以直接写dp_72,下面我们来推到一下。

       标注图:72x / 720px = 1/10

       因为base_dp=720,所以布局默认smallWidth对应的dp值是720dp,而在values-sw720的dimens中,dp_1=1dp,dp_2=2dp,...dp_72=72dp,...,所以,

       布局:72dp / 720dp = 1/10

       可以看出,布局中控件宽度写dp_72,同样占布局总宽的十分之一,和设计图效果一致。当程序运行到不同设备上时,会去查找当前设备对应的sw文件,例如我的测试机屏幕大小是1080x1920,像素密度为3,smallWidth对应的dp值是1080/3=360。在sw360中,dp_72的值如下如所示:

同样,36dp / 360dp也是十分之一,因此就实现了适配效果。这种适配方式的思想类似百分比布局,控件占屏幕大小比例是固定值。

       我在布局中写了10个大小为dp_72的TextView, 打开开发者选项中的显示布局边界,下面是在不同设备上的显示效果,包括平板和手机。

手机sw360:

三星平板sw800

小米平板sw768:

注:实现适配的前提,是在screenMatch.properties中有对应的sw值,否则系统会使用数值相近的sw文件,导致当前设备布局不适配。

       如果还需要其他数值的sw文件,也可以在这里配置,配置好后鼠标移到studio左侧,右键选择ScreenMatch,生成新添加的sw文件即可。

       上面的例子是当设计图宽为720的情况,如果你的设计图使用的是其他尺寸大小,如1080,可以把base_dp=1080,右键选择ScreenMatch更新1080对应的sw文件。

       Demo源码地址:https://github.com/ligen4w/SWMatchTest/tree/master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值