Android应用目录(一)-----资源目录
2011-05-23 22:03 bitfairyland 阅读(807) 评论(0) 编辑 收藏 举报
MyApp/ |
|
AndroidManifest.xml |
(required) Advertises the screens that this application provides, where they can be launched (from the main program menu or elsewhere), any content providers it implements and what kind of data they handle, where the implementation classes are, and other application-wide information. Syntax details for this file are described in The AndroidManifest.xml File. |
src/ |
(required) This folder holds all the source code files for your application, inside the appropriate package subfolders. |
res/ |
(required) This folder holds all the resources for your application. Resources are external data files or description files that are compiled into your code at build time. Files in different folders are compiled differently, so you must put the proper resource into the proper folder. (See Resources for details.) |
anim/ |
(optional) Holds any animation XML description files that the application uses. The format of these files is described in Resources. |
drawable/ |
(optional) Zero or more files that will be compiled to android.graphics.drawable resources. Files can be image files (png, gif, or other) or XML files describing other graphics such as bitmaps, stretchable bitmaps, or gradients. Supported bitmap file formats are PNG (preferred), JPG, and GIF (discouraged), as well as the custom 9-patch stretchable bitmap format. These formats are described in Resources. |
layout/ |
(optional) Holds all the XML files describing screens or parts of screens. Although you could create a screen in Java, defining them in XML files is typically easier. A layout file is similar in concept to an HTML file that describes the screen layout and components. See User Interface for more information about designing screens, and Available Resource Types for the syntax of these files. |
values/ |
(optional) XML files describing additional resources such as strings, colors, and styles. The naming, quantity, and number of these files are not enforced--any XML file is compiled, but these are the standard names given to these files. However, the syntax of these files is prescribed by Android, and described in Resources. |
xml/ |
(optional) XML files that can be read at run time on the device. |
raw/ |
(optional) Any files to be copied directly to the device. |
资源目录
2.Resource Types
Each of the documents in this section describe the usage, format and syntax for a certain type of application resource that you can provide in your resources directory (res/
).
Here's a brief summary of each resource type:
- Animation Resources
- Define pre-determined animations.
Tween animations are saved inres/anim/
and accessed from theR.anim
class.
Frame animations are saved inres/drawable/
and accessed from theR.drawable
class. - Color State List Resource
- Define a color resources that changes based on the View state.
Saved inres/color/
and accessed from theR.color
class. - Drawable Resources
- Define various graphics with bitmaps or XML.
Saved inres/drawable/
and accessed from theR.drawable
class. - Layout Resource
- Define the layout for your application UI.
Saved inres/layout/
and accessed from theR.layout
class. - Menu Resource
- Define the contents of your application menus.
Saved inres/menu/
and accessed from theR.menu
class. - String Resources
- Define strings, string arrays, and plurals (and include string formatting and styling).
Saved inres/values/
and accessed from theR.string
,R.array
, andR.plurals
classes. - Style Resource
- Define the look and format for UI elements.
Saved inres/values/
and accessed from theR.style
class. - More Resource Types
- Define values such as booleans, integers, dimensions, colors, and other arrays.
Saved inres/values/
but each accessed from uniqueR
sub-classes (such asR.bool
,R.integer
,R.dimen
, etc.).
3.More Resource Types
This page defines more types of resources you can externalize, including:
- Bool
- XML resource that carries a boolean value.
- Color
- XML resource that carries a color value (a hexadecimal color).
- Dimension
- XML resource that carries a dimension value (with a unit of measure).
- ID
- XML resource that provides a unique identifier for application resources and components.
- Integer
- XML resource that carries an integer value.
- Integer Array
- XML resource that provides an array of integers.
- Typed Array
- XML resource that provides a
TypedArray
(which you can use for an array of drawables).
Bool
A boolean value defined in XML.
Note: A bool is a simple resource that is referenced using the value provided in the name
attribute (not the name of the XML file). As such, you can combine bool resources with other simple resources in the one XML file, under one <resources>
element.
- file location:
res/values/filename.xml
The filename is arbitrary. The<bool>
element'sname
will be used as the resource ID.- resource reference:
- In Java:
R.bool.bool_name
In XML:@[package:]bool/bool_name
- syntax:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool
name="bool_name"
>[true | false]</bool>
</resources> - elements:
<resources>
- Required. This must be the root node.
No attributes.
<bool>
- A boolean value:
true
orfalse
.attributes:
name
- String. A name for the bool value. This will be used as the resource ID.
- example:
- XML file saved at
res/values-small/bools.xml
:<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="screen_small">true</bool>
<bool name="adjust_view_bounds">true</bool>
</resources>This application code retrieves the boolean:
Resources res =
getResources()
;
boolean screenIsSmall = res.getBoolean
(R.bool.screen_small);This layout XML uses the boolean for an attribute:
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/logo"
android:adjustViewBounds="@bool/adjust_view_bounds" />
Color
A color value defined in XML. The color is specified with an RGB value and alpha channel. You can use a color resource any place that accepts a hexadecimal color value. You can also use a color resource when a drawable resource is expected in XML (for example, android:drawable="@color/green"
).
The value always begins with a pound (#) character and then followed by the Alpha-Red-Green-Blue information in one of the following formats:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
Note: A color is a simple resource that is referenced using the value provided in the name
attribute (not the name of the XML file). As such, you can combine color resources with other simple resources in the one XML file, under one <resources>
element.
- file location:
res/values/colors.xml
The filename is arbitrary. The<color>
element'sname
will be used as the resource ID.- resource reference:
- In Java:
R.color.color_name
In XML:@[package:]color/color_name
- syntax:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name="color_name"
>hex_color</color>
</resources> - elements:
<resources>
- Required. This must be the root node.
No attributes.
<color>
- A color expressed in hexadecimal, as described above.
attributes:
name
- String. A name for the color. This will be used as the resource ID.
- example:
- XML file saved at
res/values/colors.xml
:<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>This application code retrieves the color resource:
Resources res =
getResources()
;
int color = res.getColor
(R.color.opaque_red);This layout XML applies the color to an attribute:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Dimension
A dimension value defined in XML. A dimension is specified with a number followed by a unit of measure. For example: 10px, 2in, 5sp. The following units of measure are supported by Android:
dp
- Density-independent Pixels - an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi (dots per inch) screen, so
160dp
is always one inch regardless of the screen density. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. You should use these units when specifying view dimensions in your layout, so the UI properly scales to render at the same actual size on different screens. (The compiler accepts both "dip" and "dp", though "dp" is more consistent with "sp".) sp
- Scale-independent Pixels - this is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference.
pt
- Points - 1/72 of an inch based on the physical size of the screen.
px
- Pixels - corresponds to actual pixels on the screen. This unit of measure is not recommended because the actual representation can vary across devices; each devices may have a different number of pixels per inch and may have more or fewer total pixels available on the screen.
mm
- Millimeters - based on the physical size of the screen.
in
- Inches - based on the physical size of the screen.
Note: A dimension is a simple resource that is referenced using the value provided in the name
attribute (not the name of the XML file). As such, you can combine dimension resources with other simple resources in the one XML file, under one <resources>
element.
- file location:
res/values/filename.xml
The filename is arbitrary. The<dimen>
element'sname
will be used as the resource ID.- resource reference:
- In Java:
R.dimen.dimension_name
In XML:@[package:]dimen/dimension_name
- syntax:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen
name="dimension_name"
>dimension</dimen>
</resources> - elements:
<resources>
- Required. This must be the root node.
No attributes.
<dimen>
- A dimension, represented by a float, followed by a unit of measurement (dp, sp, pt, px, mm, in), as described above.
attributes:
name
- String. A name for the dimension. This will be used as the resource ID.
- example:
- XML file saved at
res/values/dimens.xml
:<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textview_height">25dp</dimen>
<dimen name="textview_width">150dp</dimen>
<dimen name="ball_radius">30dp</dimen>
<dimen name="font_size">16sp</dimen>
</resources>This application code retrieves a dimension:
Resources res =
getResources()
;
float fontSize = res.getDimension
(R.dimen.font_size);This layout XML applies dimensions to attributes:
<TextView
android:layout_height="@dimen/textview_height"
android:layout_width="@dimen/textview_width"
android:textSize="@dimen/font_size"/>
ID
A unique resource ID defined in XML. Using the name you provide in the <item>
element, the Android developer tools create a unique integer in your project's R.java
class, which you can use as an identifier for an application resources (for example, a View
in your UI layout) or a unique integer for use in your application code (for example, as an ID for a dialog or a result code).
Note: An ID is a simple resource that is referenced using the value provided in the name
attribute (not the name of the XML file). As such, you can combine ID resources with other simple resources in the one XML file, under one <resources>
element. Also, remember that an ID resources does not reference an actual resource item; it is simply a unique ID that you can attach to other resources or use as a unique integer in your application.
- file location:
res/values/filename.xml
The filename is arbitrary.- resource reference:
- In Java:
R.id.name
In XML:@[package:]id/name
- syntax:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
type="id"
name="id_name" />
</resources> - elements:
<resources>
- Required. This must be the root node.
No attributes.
<item>
- Defines a unique ID. Takes no value, only attributes.
attributes:
type
- Must be "id".
name
- String. A unique name for the ID.
- example:
-
XML file saved at
res/values/ids.xml
:<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="button_ok" />
<item type="id" name="dialog_exit" />
</resources>Then, this layout snippet uses the "button_ok" ID for a Button widget:
<Button android:id="@id/button_ok"
style="@style/button_style" />Notice that the
android:id
value does not include the plus sign in the ID reference, because the ID already exists, as defined in theids.xml
example above. (When you specify an ID to an XML resource using the plus sign—in the formatandroid:id="@+id/name"
—it means that the "name" ID does not exist and should be created.)As another example, the following code snippet uses the "dialog_exit" ID as a unique identifier for a dialog:
showDialog
(R.id.dialog_exit);In the same application, the "dialog_exit" ID is compared when creating a dialog:
protected Dialog
onCreateDialog(int)
(int id) {
Dialog dialog;
switch(id) {
case R.id.dialog_exit:
...
break;
default:
dialog = null;
}
return dialog;
}
Integer
An integer defined in XML.
Note: An integer is a simple resource that is referenced using the value provided in the name
attribute (not the name of the XML file). As such, you can combine integer resources with other simple resources in the one XML file, under one <resources>
element.
- file location:
res/values/filename.xml
The filename is arbitrary. The<integer>
element'sname
will be used as the resource ID.- resource reference:
- In Java:
R.integer.integer_name
In XML:@[package:]integer/integer_name
- syntax:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer
name="integer_name"
>integer</integer>
</resources> - elements:
<resources>
- Required. This must be the root node.
No attributes.
<integer>
- An integer.
attributes:
name
- String. A name for the integer. This will be used as the resource ID.
- example:
-
XML file saved at
res/values/integers.xml
:<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="max_speed">75</integer>
<integer name="min_speed">5</integer>
</resources>This application code retrieves an integer:
Resources res =
getResources()
;
int maxSpeed = res.getInteger
(R.integer.max_speed);
Integer Array
An array of integers defined in XML.
Note: An integer array is a simple resource that is referenced using the value provided in the name
attribute (not the name of the XML file). As such, you can combine integer array resources with other simple resources in the one XML file, under one <resources>
element.
- file location:
res/values/filename.xml
The filename is arbitrary. The<integer-array>
element'sname
will be used as the resource ID.- compiled resource datatype:
- Resource pointer to an array of integers.
- resource reference:
- In Java:
R.array.string_array_name
In XML:@[package:]array.integer_array_name
- syntax:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array
name="integer_array_name">
<item
>integer</item>
</integer-array>
</resources> - elements:
<resources>
- Required. This must be the root node.
No attributes.
<string-array>
- Defines an array of integers. Contains one or more child
<item>
elements.attributes:
android:name
- String. A name for the array. This name will be used as the resource ID to reference the array.
<item>
- An integer. The value can be a referenced to another integer resource. Must be a child of a
<integer-array>
element.No attributes.
- example:
- XML file saved at
res/values/integers.xml
:<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="bits">
<item>4</item>
<item>8</item>
<item>16</item>
<item>32</item>
</integer-array>
</resources>This application code retrieves the integer array:
Resources res =
getResources()
;
int[] bits = res.getIntArray
(R.array.bits);
Typed Array
A TypedArray
defined in XML. You can use this to create an array of other resources, such as drawables. Note that the array is not required to be homogeneous, so you can create an array of mixed resource types, but you must be aware of what and where the data types are in the array so that you can properly obtain each item with the TypedArray
's get...()
methods.
Note: A typed array is a simple resource that is referenced using the value provided in the name
attribute (not the name of the XML file). As such, you can combine typed array resources with other simple resources in the one XML file, under one <resources>
element.
- file location:
res/values/filename.xml
The filename is arbitrary. The<array>
element'sname
will be used as the resource ID.- compiled resource datatype:
- Resource pointer to a
TypedArray
. - resource reference:
- In Java:
R.array.array_name
In XML:@[package:]array.array_name
- syntax:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array
name="integer_array_name">
<item>resource</item>
</array>
</resources> - elements:
<resources>
- Required. This must be the root node.
No attributes.
<array>
- Defines an array. Contains one or more child
<item>
elements.attributes:
android:name
- String. A name for the array. This name will be used as the resource ID to reference the array.
<item>
- A generic resource. The value can be a reference to a resource or a simple data type. Must be a child of an
<array>
element.No attributes.
- example:
- XML file saved at
res/values/arrays.xml
:<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="icons">
<item>@drawable/home</item>
<item>@drawable/settings</item>
<item>@drawable/logout</item>
</array>
<array name="colors">
<item>#FFFF0000</item>
<item>#FF00FF00</item>
<item>#FF0000FF</item>
</array>
</resources>This application code retrieves each array and then obtains the first entry in each array:
Resources res =
getResources()
;
TypedArray icons = res.obtainTypedArray
(R.array.icons);
Drawable drawable = icons.getDrawable
(0);
TypedArray colors = res.obtainTypedArray
(R.array.icons);
int color = colors.getColor
(0,0);