在适配不同的屏幕时,主要针对的是不同设备的尺寸大小和分辨率、同一设备的横屏和竖屏。
尺寸大小普遍的分为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兼容不同的设备之适配不同的系统版本