You should always externalize resources such as images and strings from your application code, so that you can maintain them independently. Externalizing your resources also allows you to provide alternative resources that support specific device configurations such as different languages or screen sizes, which becomes increasingly important as more Android-powered devices become available with different configurations. In order to provide compatibility with different configurations, you must organize resources in your project's
res/ directory, using various sub-directories that group resources by type and configuration.
For any type of resource, you can specify default and multiple alternative resources for your application:
For example, while your default UI layout is saved in the
res/layout/ directory, you might specify a different UI layout to be used when the screen is in landscape orientation, by saving it in the
res/layout-land/ directory. Android automatically applies the appropriate resources by matching the device's current configuration to your resource directory names.
Figure 1 demonstrates how a collection of default resources from an application are applied to two different devices when there are no alternative resources available. Figure 2 shows the same application with a set of alternative resources that qualify for one of the device configurations, thus, the two devices uses different resources.
The information above is just an introduction to how application resources work on Android. The following documents provide a complete guide to how you can organize your application resources, specify alternative resources, access them in your application, and more: