通过excel生成不同dimens文件来实现安卓屏幕适配

在安卓项目中,对安卓市场上不同生产商和尺寸的手机实现屏幕适配一直是开发者比较闹心的问题,网上也有很多第三方适配方案来解决,在此不做多述。我们一般都是希望写一套布局文件,在屏幕纵横比相差不是非常大的情况下,可以根据屏幕的大小实现等比例缩放,包括宽高尺寸和文字大小,这样在不同手机上看到的都是比较和谐统一的画面。手机屏幕分辨率是手机最重要的外在显性特征,在屏幕适配时我们最好就是根据这个特征来实现等比例缩放布局,而不用去考虑屏幕大小或者屏幕像素密度等等其他因素!在安卓项目的资源目录中我们可以在"values-纵分辨率x横分辨率"的文件夹中来配置不同的dimens文件,这样手机会选择不同dimens来布局页面,根据以上原理,我们可以制作一个通用的excel文件,通过excel的计算公式帮我们生成我们需要的dimens。

1.我们将屏幕纵向分成640等分,以"h1"代表1等分,将屏幕横向分成360等分,以"w1"代表1等分,另外以"sp1"代表1个单位大小的文字!举个例子:如下图,假设我们有一个TextView控件,在values-640x360的dimens文件中,它的布局高度为h50,实际的像素高为50px,它的布局宽度为w90,实际像素宽为90px,它的布局字体大小为sp20,实际像素大小为20px,那么它在values-1280x720的dimens文件中,它的布局高度为h50,实际像素高为100px,它的布局宽度为w90,实际像素宽度为180px,它的布局字体大小为sp20,实际像素大小为40px。

通过excel生成不同dimens文件来实现安卓屏幕适配

2.制作excel文件,我们的输入部分为手机屏幕的纵横分辨率,输出部分为可以拷贝的dimens文件数据行,计算公式可参考我的excel文档,附上下载地址

通过excel生成不同dimens文件来实现安卓屏幕适配

3.输入不同的屏幕分辨率得到不同的dimes数据行,然后拷贝到项目中。由于excel便捷实用,不需要自己去写实现代码或者理解他人写的java工具类,理论上我们可以得到任何分辨率的dimens的文件。

values-640x320:

 通过excel生成不同dimens文件来实现安卓屏幕适配

values-1160x768:

 通过excel生成不同dimens文件来实现安卓屏幕适配

values-1280x720:

 通过excel生成不同dimens文件来实现安卓屏幕适配

values-1720x1200:

通过excel生成不同dimens文件来实现安卓屏幕适配

4.注意点:

1)文字大小的计算我是取纵向分辨率比值以及横向分辨率比值中较大者进行计算,实际情况时开发者可以调整或者乘以某个经验系数。

 通过excel生成不同dimens文件来实现安卓屏幕适配

2)values-纵分辨率x横分辨率这样的文件夹,要注意手机虚拟按键所占的高度,很多情况下,你的纵分辨率如果不减掉这个高度会导致你的适配方案失败,比如某些1280x720的手机可能实际需要的是values-1160x720的文件夹。