FitScreen
Android屏幕适配的一种方案,包含自动生成xml文件jar包,自动替换dp、sp的jar包。顺便附带上源码。
GitHub链接FitScreen
背景说明
最开始使用dp设置控件尺寸,在hornor v8 1440x2560的手机显示正常,到了samsung Galaxy On7 1080x1920的手机上显示爆炸。。。(左hornor v8 1440x2560, 右samsung Galaxy On7 1080x1920)
在尝试了N久还是没得结果的情况下,看到一个GitHub上面有一个shell写的脚本可以生成这些文件,奈何拉下来跑了一下没成功,向author发了封邮件也没有结果,自己看了看源码也搞不明白(没学过shell…而且很慢)。想想之前看了鸿洋大神的一篇博客准备自己来搞事情。
本方案在参考多位前人的适配方案下,自己对android
屏幕适配做了一些总结。
适配方式
最小宽度(values-swxxxdp)形式。不同于生成不同分辨率对应px值,这个方案通过生成对应的dp、sp值来进行适配。
根据公式dp= 160*屏幕宽度px/dpi,得到的就是上面xxx的值。
dpi可以通过代码获取
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
Log.d(TAG," densityDpi is "+displayMetrics.densityDpi);
安卓手机dpi,分为 120(ldpi)、160(mdpi)、213、240(hdpi)、280、320(xhdpi)、360、400、 420、480(xxhdpi)、560、640(xxxhdpi);
一般为以上值。比如我的honor手机计算得到dp是360,Samsung计算得到dp是411,所以我创建了两个values文件夹,values-sw360dp、values-sw411dp,手机会自动找到与其对应的values文件夹。
如需了解更多,请自行google。
适配后
使用姿势
我已经将jar文件(jar包下)以及java文件放入仓库中,提供源码进行查看(src包下)。具体请进GitHub查看。
生成对应的文件夹
- 将GenerateFile.jar下载下来放入某个目录下,cmd输入
java -jar GenerateFile.jar xxx w1_w2...
。 - xxx为基础宽度,必须为整数。w1 w2为需要其他的宽度值,同样需要整数。
- 默认基础宽度360,还有另外两个320、411。如果不需要设置,忽略xxx以及w1、w2,直接输
java -jar GenerateFile.jar
回车即ok。 - 说明:为什么要基础宽度?举个栗子,UI美眉给你的标注图为750x1334,这个是iOS的标注尺寸,对应Android里面可以看成720x1280,看下图,根据上面的公式计算出来的dp值就是360。如果你将360设置为基础宽度,你就可以正常使用dp值,例如320、411的就会自动进行缩放。
例如:
1. 我将GenerateFile.jar放入桌面,打开cmd切换到桌面目录,输入命令,回车即可生成res文件夹。