在做安卓开发过程中,经常会遇到需要适配各种奇形怪状的屏幕的情况,例如下面这位大哥:
宽:67.5cm
高:120cm
但是他的实际像素才1080(w)x1872(h),density:1.0,densityDpi:160。
在这种情况下我们知道应该用values-sw600dp这种类型的文件夹存放这种屏幕的资源,但是如何确认屏幕应该用什么样尺寸的文件夹呢,也就是应该如何确认是600,还是700,还是480呢?
这里有一个算法:
sw-xxxx-dp的计算公式是 xxxx = sw *160/dpi
其中sw为屏幕分辨率中最小的那个值。在这里就是1080
dpi为屏幕密度,在这里就是160 。 也可以用如下方式获取:
1
adb shell getprop ro.sf.lcd_density
所以这个屏幕所使用的最小宽度应该为:1080 * 160 / 160 = 1080,也就是sw-1080dp。
提供一个获取安卓设备信息的开源项目:
https://github.com/menny/android-device-info
下面是一些常用范例:
参考资料: