What is the res Directory?
The res directory is where you should put things such as images,
strings, and layouts. It's included in every Android project, and you
can see it in Android Studio here:
Inside
of the res directory, are sub folder for the following types of
resources. You may have a subset of these directories, depending on the
types of resources you're using in your app. Here are some examples
Different Resource Directories
This information can also be found
here.
Some Common Resource Types
Name |
What's Stored Here |
values |
XML files that contain simple values, such as string or integers |
drawable |
A bunch of visual files, including Bitmap file types and shapes. More information is here |
layouts |
XML layouts for your app |
Other Resource Types
Name |
What's stored here |
animator |
XML files for property animations |
anim |
XML files for tween animations |
color |
XML files that define state list colors |
mipmap |
Drawable files for launcher icons |
menu |
XML files that define application menus |
raw |
Resource file for arbitrary files saved in their raw form. For
example, you could put audio files here. (You might also be interested
in the assets folder, depending on how you use that audio) |
xml |
Arbitrary XML; if you have XML configuration files, this is a good place to put them |
Why Resources
You should always keep things like images and layouts separate in the
res
folder. Keeping resource files and values independent helps you easily
maintain them if you need to update, say, all your button images to
match a new style. The Android Framework also easily allows for
alternative resources that support specific device configurations such
as different languages or screen sizes. Providing a customized
experience for users from different locations or on different devices
becomes increasingly important as more of the world comes online and
more devices come on the market. We will see how to provide alternate
resources for different configurations and locals later in this course.
Using Resources in XML and Java
You've already seen resources in action. For example, in the
MainActivity
, you have already seen usage of resources. When we say
setContentView(R.layout.activity_main)
, we are referencing a resource (the
activity_main.xml
) file to use as the layout of
MainActivity
.
That magical looking R.layout part of the expression above is actually a
static class that is generated for us to reference resources in Java
code. This is all described in the
Android Layouts Primer.
Working with strings.xml
In Java, you can get a String saved in
res ->
values ->
strings.xml by calling the
getString
method. If you’re in an Activity, you can just call
getString
, and pass in the String resource ID. The String resource ID can be found in the
strings.xml XML. For example, let's look at Sunshine's
strings.xml file:
<string name="today">Today</string>
<string name="tomorrow">Tomorrow</string>
<string name="format_full_friendly_date">
<xliff:g id="month">%1$s</xliff:g>, <xliff:g id="day">%2$s</xliff:g>
</string>
The id of the String with the value "Today" is
today
and the id of the String with the value
<xliff:g id="month">%1$s</xliff:g>, <xliff:g id="day">%2$s</xliff:g>
is
format_full_friendly_date
If you wanted to reference the
Today string, you would reference it in Java by doing something like this:
String myString = getString(R.string.today);
In XML, you can access a String by using the @string accessor method.
For the same String defined above, you could access it like this:
<TextView text=”@string/today” />
No comments:
Post a Comment