实战|Android超强的屏幕适配框架AutoSize的使用效果
- 2020 年 2 月 17 日
- 筆記
学更好的别人,
做更好的自己。
——《微卡智享》
本文长度为1617字,预计阅读5分钟
Android的屏幕适配
早就想研究一下屏幕适配这块了,主要开始我自己做的那个APP都是基于PDA的,所以不需要适配别的机形,而原本自己的那个PDA的屏幕比例也是比较特别,用他的效果在手机或是Android虚拟机上效果都不好看,差别好大,于是就想研究一下关于Android屏幕适配的框架,原来找到一个AndroidAutoLayout的框架,结果后来发现这个已经N年没再更新了,无意间发现了今日头条屏幕适配方案终极版,用了一下,真是简单又好用。

先看未配置的对比








从上面的对比图来看,开始的登陆页面差别还是挺大的,别的也有差,不过不会非常明显,接下来我们就看看适配框架怎么来用。
AndroidAutoSize

微卡智享
先放一下框架的地址:
https://github.com/JessYanCoding/AndroidAutoSize.git
实现步骤
1. build.gradle中加入依赖项implementation 'me.jessyan:autosize:1.1.2'
2. 计算我们原适配程序的宽高,因为默认计算获得的都是PX像素,这里我们需要的是DP值。
3. 在AndroidMainfest.xml中加入设置即可。
上面三步即可完成我们的屏幕适配,就是这么简单。接下来分步简单说一下。
加入依赖项
我们在项目的build.gradle中加入引用依赖项
implementation 'me.jessyan:autosize:1.1.2'

先获取到原适配的宽和高DP值
我们在启动界面中加入一段代码,用来获取当前屏幕的DP值,运行起来好会直接输出显示出来。
//获取屏幕分辨率 DisplayMetrics metric=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width=metric.widthPixels; // 宽度(PX) int height=metric.heightPixels; // 高度(PX) float density=metric.density; // 密度(0.75 / 1.0 / 1.5) int densityDpi=metric.densityDpi; // 密度DPI(120 / 160 / 240) //屏幕宽度算法:屏幕宽度(像素)/屏幕密度 int screenWidth = (int) (width/density);//屏幕宽度(dp) int screenHeight = (int)(height/density);//屏幕高度(dp) Toast.makeText(SplashActivity.this, "宽度:" + width + " 高度:" + height + " 密度:" + density + " 密度DPI:" + densityDpi + "rn屏幕dp宽度:" + screenWidth + " 屏幕dp高度:" + screenHeight, Toast.LENGTH_LONG).show();

运行程序后得到的我们原来做的宽和高分别的320DP和533DP
AndroidMainifest.xml加入配置
最后我们在AndroidMainifest.xml加入配置,其中输入的宽和高就是刚才我们运行程序后得到的宽和高。
<manifest> <application> <meta-data android:name="design_width_in_dp" android:value="320"/> <meta-data android:name="design_height_in_dp" android:value="533"/> </application> </manifest>
这样所有的配置就完成了,非常简单,下面就看一下在改完前后的对比效果。







