使用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的值如下如所示:

使用ScreenMatch实现SmallWidth屏幕适配,用像素值px实现布局_第1张图片

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

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

手机sw360:

使用ScreenMatch实现SmallWidth屏幕适配,用像素值px实现布局_第2张图片

三星平板sw800

使用ScreenMatch实现SmallWidth屏幕适配,用像素值px实现布局_第3张图片

小米平板sw768:

使用ScreenMatch实现SmallWidth屏幕适配,用像素值px实现布局_第4张图片

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

使用ScreenMatch实现SmallWidth屏幕适配,用像素值px实现布局_第5张图片

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

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

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

你可能感兴趣的:(屏幕适配)