美文网首页
Android 屏幕适配之ScreenMatch

Android 屏幕适配之ScreenMatch

作者: hao_developer | 来源:发表于2023-07-10 13:55 被阅读0次

    Android ScreenMatch屏幕适配是一种简单适用的适配方式,是由Android官方推出的适配方法。废话不多说直接上干活:

    1.首先下载安装ScreenMatch插件,Ctrl+Alt+S打开Plugins

    image.png
    2生成配置文件

    右击项目找到ScreenMatch,如下图:

    image

    单击之后,会有选择项目的界面,选择你想在哪个项目中使用ScreenMatch。

    image

    会生成两个文件:screenMatch.properties,screenMatch_example_dimens.xml。

    image

    修改screenMatch_example_dimens.xml文件把它改成dimens.xml文件复制到values文件夹下(如果里面没有你需要的大小,可以自己添加进去)重新在项目右键选择ScreenMatch,这时会在res文件夹下看到很多values:

    image.png

    这是点完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

    相关文章

      网友评论

          本文标题:Android 屏幕适配之ScreenMatch

          本文链接:https://www.haomeiwen.com/subject/bkveudtx.html