Android Chapter16 Resources

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

10/11/2009

16
Android 
Android
External Resources

Victor Matos
Cleveland State University

Notes are based on: 
The Busy Coder's Guide to Android Development
by Mark L. Murphy
Copyright © 2008‐2009 CommonsWare, LLC.
ISBN: 978‐0‐9816780‐0‐9
&
Android Developers 
http://developer.android.com/index.html

16. Android – Resources

Android Resources
Resources and Internationalization

Resources are external files (that is, non‐code files) that are used by your code 
and compiled into your application at build time. 

Android supports a number of different kinds of resource files, including XML, 
PNG, and JPEG files. 

Resources are externalized from source code, and XML files are compiled into a 
binary fast loading format for efficiency reasons Strings likewise are
binary, fast loading format for efficiency reasons. Strings, likewise, are 
compressed into a more efficient storage form. 

http://developer.android.com/guide/topics/resources/resources‐i18n.html

1
10/11/2009

16. Android – Resources

Android Resources
Using Resources
The Android resource system keeps track of all non‐code assets associated with 
y p
an application.

You use the Resources class to access your application's resources; the 
Resources instance associated with your application can generally be found 
through   Context.getResources().

To use a resource, you must install it correctly in the source tree and build your 
application
application.

16. Android – Resources

Android Resources
Copy/Paste Resources

You will create and store your 
y
resource files under the appropriate 
subdirectory under the res/ directory 
in your project.  

Resources are compiled into the final 
APK file. 

Android creates a wrapper class, 
Android creates a wrapper class
called R, that you can use to refer to 
these resources in your code. R 
contains subclasses named according 
to the path and file name of the 
source file
4

2
10/11/2009

16. Android – Resources

Android Resources
Directory Resource Types

res/anim/ XML files that are compiled into frame by frame animation or tweened animation objects

res/drawable/ .png, .9.png, .jpg files. To get a resource of this type, use
mContext.getResources().getDrawable(R.drawable.imageId)

res/layout/ XML files that are compiled into screen layouts (or part of a screen).

res/values/ XML files that can be compiled into many kinds of resource.

arrays.xml to define arrays


colors.xml to define color drawables and color string values. Use Resources.getDrawable() and
Resources.getColor(), respectively, to get these resources.
dimens.xml to define dimension value. Use Resources.getDimension() to get these resources.
strings.xml
st gs to
o de
definee sstring
g values
a ues (use e
either
e Resources.getString
esou ces.getSt go
or p
preferably
e e ab y
Resources.getText() to get these resources. getText() will retain any rich text styling which is usually
desirable for UI strings.
styles.xml to define style objects.

res/xml/ Arbitrary XML files that are compiled and can be read at run time by calling Resources.getXML().

res/raw/ Arbitrary files to copy directly to the device. They are added uncompiled to the compressed file that your
application build produces. To use these resources in your application, call Resources.openRawResource()
with the resource ID, which is R.raw.somefilename

  5

16. Android – Resources

Android Resources

A Typical Android Application consists of 
Java code and additional resources merged 
together into a deployable  .apk file

3
10/11/2009

16. Android – Resources

Resources

Examples. 
To see a number of samples you 
To see a number of samples you
should explore the folder: 
c:\Android\platforms\android‐1.5\data\res\

16. Android – Resources

Resources

More Examples. 
Try to install the ApiDemos
Try to install the ApiDemos
application. Explore its resource  
folder. Find the source code in the 
folder: 
c:\Android\platforms\android‐1.6\samples\

How to install the App:
File ‐> New ‐> Project ‐> Android Project ‐> Next 
Select "Create project form existing source" 
Select the ApiDemos folder (all remaining fields will 
be self adjusted)

4
10/11/2009

16. Android – Resources

Android Resources
Java Statements for Using Resources
Displaying a screen layout:

setContentView(R.layout.main);

setContentView(R.layout.screen2);

16. Android – Resources

Android Resources
Java Statements for Using Resources
Retrieving String Resources from: res/values/…

/res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hola Mundo!, ResourceDemo1!</string>
<string name="app_name">ResourceDemo1</string>
<string name="good_bye">Hasta luego</string>
<string name="color_caption">Color:</string>
<string name="color_prompt">Seleccione un Color</string>
<string name="planet_caption">
<b>Planeta </b>Planeta <i>Planeta </i><u>Planeta:
</u></string>
< t i
<string name="planet_prompt">Seleccione
" l t t">S l i un Planeta</string>
Pl t </ t i >
</resources>

String msg =
this.getString(R.string.color_prompt);

10

5
10/11/2009

16. Android – Resources

Android Resources
Java Statements for Using Resources
Enhancing externalized String resources from: res/values/…
//res/values/strings.xml
/ / g
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hola Mundo!, ResourceDemo1!</string>
<string name="app_name">ResourceDemo1</string>
<string name="good_bye">Hasta luego</string>
<string name="color_caption">Color:</string>
<string name="color_prompt">Seleccione un Color</string>
<string name="planet_caption">
<b>Planeta </b>Planeta <i>Planeta </i><u>Planeta: </u></string>
<string name="planet_prompt">Seleccione un Planeta</string>
</resources>

As in HTML a string using <b>, <i>, <u> modifiers will be rendered in: bold, italics, 
and, underlined modes. In our example:

Planeta Planeta Planeta Planeta

11

16. Android – Resources

Android Resources
Java Statements for Using Resources
Retrieving Array Resources from: res/values/…

/res/values/arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<string-array name="planets">
<resources> <item>Mercury</item>
<item>Venus</item>
<string-array name="colors"> <item>Earth</item>
<item>red</item> <item>Mars</item>
<item>orange</item> <item>Jupiter</item>
<item>yellow</item> <item>Saturn</item>
<item>green</item> <item>Uranus</item>
<item>blue</item> <item>Neptune</item>
<item>violet</item> <item>Pluto</item>
</string-array> </string-array>

</resources>

String myColors[] =
this.getResources().getStringArray(R.array.colors);

12

6
10/11/2009

16. Android – Resources

Android Resources
Java Statements for Using Resources
Retrieving a drawable image from: res/drawable/…

/res/drawable/

//same as xml layout attribute


//android:src="@drawable/android_green_3d“

imageView1.setImageResource(
R.drawable.android_green_3d);

13

16. Android – Resources

Android Resources
Example1.  Using Embedded Resources (drawable, string, array).
<?xml version
version="1.0"
1.0 encoding
encoding="utf-8"?>
utf 8 ?>
<LinearLayout <TextView
xmlns:android="http://schemas.android.com/apk/res/an android:layout_width="fill_parent"
droid" android:layout_height="wrap_content"
android:orientation="vertical" android:layout_marginTop="10dip"
android:padding="10dip" android:textSize="18px"
android:layout_width="fill_parent" android:text="@string/planet_caption"
android:layout_height="fill_parent" />
android:background="@color/solid_blue"
> <Spinner android:id="@+id/spinner2"
android:layout_width="fill_parent"
<ImageView android:layout_height="wrap_content"
android:id="@+id/ImageView01" android:drawSelectorOnTop="true"
android:layout_width="wrap_content" android:prompt="@string/planet_prompt"
android:layout_height="wrap_content" />
>
</ImageView> </LinearLayout>

<EditText
<?xml version="1.0" encoding="utf-8"?>
android:id="@+id/txtColorBox"
<resources>
android:layout_width="fill_parent"
<drawable name="red">#7f00</drawable>
android:layout_height="wrap_content"
<drawable name="blue">#770000ff</drawable>
/>
<drawable name="green">#7700ff00</drawable>
<color name="solid_red">#f00</color>
<color name="solid_blue">#0000ff</color>
<color name="solid_green">#f0f0</color>
/res/values/color.xml <color name="solid_yellow">#ffffff00</color>
</resources>
14

7
10/11/2009

16. Android – Resources

Android Resources
Example1.  Using Embedded Resources (drawable, string, array).

15

16. Android – Resources

Android Resources
Example1.  Using Embedded Resources (drawable, string, array).
// using Resources (adapted from Android - ApiDemos)
package cis493.resources;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;

public class ResourceDemo1 extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//TRY: setContentView(R.layout.screen2);

ImageView imageView1 = (ImageView)findViewById(R.id.ImageView01);


//similar to xml layout android:src="@drawable/android_green_3d"
imageView1.setImageResource(R.drawable.android_green_3d);

16

8
10/11/2009

16. Android – Resources

Android Resources
Example1.  Using Embedded Resources (drawable, string, array).
EditText txtColorBox = (EditText)findViewById(R.id.txtColorBox);

String msg = this.getString(R.string.color_caption);


this.getString(R.string.color caption);

String myColors[] = this.getResources().getStringArray(R.array.colors);

for ( int i=0; i<myColors.length; i++){


msg += "\n\t" + myColors[i];
}
txtColorBox.setText(msg);

Spinner s2 = (Spinner) findViewById(R.id.spinner2);


A
ArrayAdapter<CharSequence>
Ad t <Ch S > adapter
d t = ArrayAdapter.createFromResource(
A Ad t t F R (
this,
R.array.planets,
android.R.layout.simple_spinner_item);

adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
s2.setAdapter(adapter);
}
} 17

16. Android – Resources

Android Resources
mmmm

18

9
10/11/2009

16. Android – Resources

Android Resources
mmmm

19

16. Android – Resources

Android Resources
mmmm

20

10
10/11/2009

21

16. Android – Resources

Resources
Questions ?

22

11

You might also like