Android 屏幕适配之ScreenMatch
Android ScreenMatch屏幕适配是一种简单适用的适配方式,是由Android官方推出的适配方法。废话不多说直接上干活:
1.首先下载安装ScreenMatch插件,Ctrl+Alt+S打开Plugins
image.png2生成配置文件
右击项目找到ScreenMatch,如下图:
image单击之后,会有选择项目的界面,选择你想在哪个项目中使用ScreenMatch。
image会生成两个文件:screenMatch.properties,screenMatch_example_dimens.xml。
image修改screenMatch_example_dimens.xml文件把它改成dimens.xml文件复制到values文件夹下(如果里面没有你需要的大小,可以自己添加进去)
重新在项目右键选择ScreenMatch,这时会在res文件夹下看到很多values:
这是点完screenmatch之后生成的文件
2.3几个配置文件简介
上面生成了screenMatch.properties和screenMatch_example_dimens.xml与res下面的values之间的关系呢。让我们看看具体的配置文件。
2.3.1screenMatch.properties文件
在这个文件中你需要关注就两个参数
base_dp和match_dp
插件的作者建议base_dp不要修改,个人感觉修改时你需要考虑如下问题:
-
1.若base_dp=360这种机型在你项目中就不可能有,你完全可以根据你项目中的基础机型来配置这个基础base_dp。假如你项目最差也是640,为啥你还要在项目中生成360的呢。
-
2.match_dp 若是不配置,插件会默认的给你设置一些默认的值,若是你不需要那么多,你可以把刚才生成的删掉,重新配置match_dp,重新生成values。
System default values is 系统默认的值
384,392,400,410,411,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365
其实很多项目组,用不到这么多的值,只需要把你需要值配置进去即可。这样做的目的是为了减少apk的体积。即使以后想扩展的话,只需要在match_dp参数添加对应的值,并重新点一次screenmatch按钮就可完整配置。
- 3.如何计算每个手机或者平板的对应的match_dp呢?
计算方法:width/density
在pad计算时要特别注意,因为pad有横屏和竖屏之分。因为screenmatch是根据宽度进行计算的,在横屏和竖屏时,adb获取的像素格式为宽度*高度,改变方向,值的位置是变化的
横屏:1280640
竖屏:6401280
什么意思呢?同一个设备,分辨率为1280*640,横屏下高度为640,竖屏则是1280,这是你match_dp就是两个完全不同的值。加入density为2,match_dp 分辨为320和640。
2.3.2 screenMatch_example_dimens.xml文件
这个文件相当重要,也不重要,为啥呢?
先了解一下,screenmatch适配的原理,它将所有可能宽度都生成好,我只需要使用这些已经生成好的数值就行了,在不同的机型下,自动适配到不同的宽度。这就是涉及到要把所有要设配的机型的对应的值都要计算一遍。
screenmatch会根据res/values/dimens.xml文件中基础数值去计算并生成match_dp配置的所有宽度的dimens.xml。
而这个文件的意义,就在于你可以直接把他拷贝到res/values/dimens.xml中,并以此来计算出其他宽度dimens.xml。假如match_dp=384,400,411,533,640,720,768,820,会生成如下图dimens.xml:
注: 这里面还有优化空间,就是你需要多少像素值,就在里面写多少,不然可能有很多像素用不到,增加包的体积。比如说,1-10像素根本用不到,你可以它去掉,你感觉这个10个数字没啥,要是你适配20款不同高度时,就相当于有10*20个记录是用不到的。
image