在适配不同的屏幕时,主要针对的是不同设备的尺寸大小和分辨率、同一设备的横屏和竖屏。

尺寸大小普遍的分为4类:small(小尺寸)、normal(普通尺寸)、large(大尺寸)、xlarge(超大尺寸)

分辨率普遍分为4类:ldpi(低精度)、mdpi(中精度)、hdpi(高精度)、xhdpi(超高精度)

与适配不同区域的语言类似,在APP中应该包含一些所需要的可选资源,针对不同的屏幕声明对应的UI布局资源layout和图片资源bitmap,然后将这些可选的资源存放在独立的对应的目录中。

UI布局资源layout

根据所需要支持的屏幕尺寸大小创建唯一的XML文件,每一种资源文件存放在相应的资源目录中,资源目录以layout-<屏幕尺寸大小>命名。例如,超大尺寸屏幕目录layout-xlarge,针对超大尺寸屏幕有一资源文件activity_main.xml,那么该XML文件就应该存放在res/layout-xlarge/目录中。

在程序运行时,Android会根据屏幕尺寸的大小自动的测量layout文件,确保不同屏幕尺寸的XML文件存放于对应的目录中,并且XML文件要具有唯一性,不同目录下的XML文件 文件名 相同,内容不同。

在activity中直接引用资源文件即可:

支持横屏尺寸的layout资源:

图片资源bitmap

为4中普遍存在的分辨率提供对应的图片资源bitmap,根据原始的矢量图片资源,按以下比例生成不同密度的图像:

ldpi:0.75

mdpi:1.0(这个是标准)

hdpi:1.5

xhdpi:2.0

也就是说,如果针对中精度mdpi的图片为48 X 48,那么低精度ldpi的图片为36 X 36,高精度hdpi的图片为72 X 72,超高精度的图片为96 X 96,然后将图片存入对应的mipmap资源目录中:

当使用@mipmap/ic_launcher.png引用图片资源时,系统将根据对应设备屏幕的分辨率选择合适的图片资源bitmap。

适配不同的系统版本,请关注我的下一篇文章—APP兼容不同的设备之适配不同的系统版本