应用程序的资源,如图片和字符串等应该始终放到代码的外部,这样可以独立的维护它们。把资源放到外部还能够提供支持特殊设备配置的可选资源,如不同的语言或屏幕尺寸。随着Android支持的带有不同配置的设备越来越多,这种代码与资源分离的特性也日益变的重要。为了提供不同配置的兼容性,必须把资源组织到工程的res/目录中,使用各种子目录把不同类型的配置资源分组。
对于任意类型的资源,都可以给应用程序指定默认资源和多种可选资源:
1. 默认资源是那些设备配置无关的资源,或者是没有与当前配置匹配的可选资源时所使用的资源。
2. 可选资源是那些用来给特定设备配置所使用的资源。对于特殊的配置要指定一个资源组,并给目录名追加一个适当的配置限定符。
例如,默认的UI布局保存在res/layout/目录中,可以指定一个横向屏幕使用的不同布局,把它保存在res/layout-land/目录中。通过把设备的当前配置与资源目录的匹配,Android能够自动的应用合适的资源。
图1演示了在没有可利用的可选资源时,系统是如何把相同的布局应用给两种不同的设备的。图2演示了在给大屏设备添加了一个可选的布局资源时,应用程序的效果。
图1.使用默认布局的两种不同设备(没有提供可选布局资源)
图2.两种不同的设备,针对不同的屏幕尺寸使用不同的布局资源。