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: