实战|Android超强的屏幕适配框架AutoSize的使用效果

学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为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>

这样所有的配置就完成了,非常简单,下面就看一下在改完前后的对比效果。