Android

Android


13.RECURSOS

Página 15 de 25

13.   RECURSOS

Se llaman resources a los recursos (como las constantes String, ficheros de imágenes o sonido, etc.) que pueden ser especificados fuera del código Java. Los recursos se almacenan en el directorio res del proyecto. Ejemplos de recursos son los ficheros xml, localizados en el directorio res/layout, usados para especificar el layout, y que nosotros hemos utilizado también para introducir constantes de tipo String, nombres de ficheros de imágenes, etcétera.

13.1.   El recurso string

Ilustraremos aquí el uso del recurso @string. El símbolo @ indica que el nombre que le sigue es un recurso, almacenado en un fichero. Los recursos @string se almacenan en el fichero res/values/strings.xml.  Nótese que el nombre del fichero termina en “s”, mientras que el del recurso no. Este fichero es siempre creado por Eclipse automáticamente al crear un nuevo proyecto, conteniendo las definiciones de dos cadenas: hello (la cadena que contiene el texto “Hello Android” y app_name (que contiene el nombre de la aplicación).

<?xml version="1.0" encoding="utf-8"?>

<resources>

      <string name="hello">Hello Android</string>

      <string name="app_name">Hello Android</string>

</resources>

A este fichero se le puede añadir el contenido de cualquier cadena que se utilice luego en el layout o en el programa Java. Esto permite cambiar fácilmente los contenidos de las cadenas de texto sin necesidad de modificar el programa ni el layout, por ejemplo para variar el idioma. Además este recurso admite escribir código HTML simple para modificar la apariencia del texto.

Esto se ilustra en el siguiente ejemplo. Creamos un nuevo proyecto Android y, en el fichero strings.xml, incluimos la definición de una cadena llamada html1 conteniendo algunos comandos HTML:

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, RecursoStringActivity!

    </string>

    <string name="app_name">RecursoString</string>

    <string name="html1">

    <font size="24">

    Este contenido ha sido definido en el fichero de recursos

    <i>strings.xml</i>.

    Se pueden escribir <b>comandos HTML simples para formato

    del texto.</b>

    </font>

    <font size="18">Se permite el comando font para cambiar

    el tamaño de la fuente.

    Esta tiene tamaño 18.</font>

    <font size="15"> Esta tiene tamaño 15.</font>

    <font color="00ff00">No Se permite font para cambiar el

    color.</font>

    <p>Tampoco se puede iniciar un nuevo párrafo.</p>

    <h1>Ni poner encabezamientos</h1>

    </string>

</resources>

Figura 13.1. Utilizando recursos string en un layout

para escribir comandos HTML.

En el fichero main.xml añadimos un TextView con una referencia @string/html1 a la cadena anterior.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

       android:orientation="vertical"

       android:layout_width="fill_parent"

       android:layout_height="fill_parent"

       android:background="#ffffff"

       >

<TextView

       android:textColor="#000000"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:text="@string/hello"

       />

<TextView

       android:textColor="#000000"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:text="@string/html1"

       />

</LinearLayout>

13.2.   El recurso color

De la misma forma, se pueden definir los colores típicos de la aplicación en el fichero de recursos res/values/colors.xml. En el siguiente ejemplo definimos un color para el fondo y cuatro colores para el texto:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<color name="backgroundColor">#FFFFFF</color>

<color name="textColor1">#000000</color>

<color name="textColor2">#FF0000</color>

<color name="textColor3">#0000FF</color>

<color name="textColor4">#EEEE00</color>

</resources>

Para referenciar uno de estos recursos en el fichero main.xml usamos su nombre precedido por @color/:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

       android:background="@color/backgroundColor"

       android:orientation="vertical"

       android:layout_width="fill_parent"

       android:layout_height="fill_parent"

       >

<TextView

       android:textColor="@color/textColor1"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:textSize="20sp"

       android:text="Uso del recurso @color en colors.xml"

       />

<TextView

       android:textColor="@color/textColor1"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:textSize="20sp"

       android:text="Texto de color textColor1"

       />

<TextView

       android:textColor="@color/textColor2"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:textSize="20sp"

       android:text="Texto de color textColor2"

       />

<TextView

       android:textColor="@color/textColor3"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:textSize="20sp"

       android:text="Texto de color textColor3"

       />

<TextView

       android:textColor="@color/textColor4"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:textSize="20sp"

       android:text="Texto de color textColor4"

       />

</LinearLayout>

El resultado se presenta en la figura 13.2.

Figura 13.2. Utilizando recursos de color en un layout.

13.3.   Usando recursos en un Layout

En el siguiente ejemplo veremos cómo se usa el recurso string en un layout. En este caso el recurso nos es útil para poder escribir sub-índices y super-índices en HTML. Creamos una nueva actividad HandroidPhysics y modificamos el fichero strings.xml de la siguiente forma:

strings.xml:

<?xml version="1.0" encoding="utf-8"?>

<resources>

   <string name="hello">

      <b>Interacción  Neutrón-Protón</b>

   </string>

   <string name="potential">

      V(<b>r</b>)=\u03a3<sub>i</sub>

      \u03bb<sub>i</sub>/2\u03bc

      \u03b4(r-R<sub>i</sub>)

      (Pulse para ajustar \u03bb<sub>i</sub> y R<sub>i</sub>)

   </string>

   <string name="botonHe"><b>C)</b> <sup>4</sup>He</string>

   <string name="Emax">E<sub>max</sub>(MeV)</string>

   <string name="lambda0">  

      \u03bb <sub> 0 </sub> (fm)<sup>-1</sup>

   </string>

   <string name="R0"> R <sub> 0 </sub> (fm)</string>

   <string name="lambda1">

      \u03bb <sub> 1 </sub> (fm)<sup>-1</sup>

   </string>

   <string name="R1"> R <sub> 1 </sub> (fm)</string>

   <string name="S0"><b>A)</b><sup>1</sup>S<sub>0</sub>

   </string>

   <string name="S1"><b>B)</b> <sup>3</sup>S<sub>1</sub>

   </string>

   <string name="app_name">HandroidPhysics</string>

   <string name="tolerancia">Tolerancia</string>

   <string name="resolucion">Resolución</string>

</resources>

Los colores están definidos en el fichero res/values/colors.xml siguiente:

colors.xml:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<color name="backgroundColor">#FFFFAA</color>

<color name="textColor">#000000</color>

<color name="lineColor">#aa0000</color>

</resources>

Finalmente, el layout está definido en el siguiente fichero main.xml. Cada cadena se referencia por su nombre, precedido por el tipo de recurso, en este caso string o color.

main.xml:

<?xml version="1.0" encoding="utf-8"?>

<TableLayout

xmlns:android="http://schemas.android.com/apk/res/android"

    android:background="@color/backgroundColor"

    android:stretchColumns="*"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:padding="10sp"

    >

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />

<TableRow>

  <Button

    android:id="@+id/button2"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/S0">

  </Button>

  <Button

    android:id="@+id/button3"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/S1">

  </Button>

  <Button

    android:id="@+id/button1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/botonHe">

  </Button>

</TableRow>

<TextView></TextView>

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/potential"

        />

<View android:background="@color/lineColor"

    android:layout_height="1sp">

</View>

<TextView></TextView>

<TableRow android:padding="3sp">

<EditText

    android:id="@+id/R00"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="1"

    />

<EditText

    android:id="@+id/R10"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="1"

    />

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:text="@string/R0"

    />

</TableRow>

<TableRow >

<EditText

    android:id="@+id/lambda00"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="0.0"

    />

<EditText

    android:id="@+id/lambda10"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="0.0"

    />

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:text="@string/lambda0"

    />

</TableRow>

<TableRow android:padding="3sp">

<EditText

    android:id="@+id/R01"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="1.99"

    />

<EditText

    android:id="@+id/R11"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="1.53"

    />

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:text="@string/R1"

    />

</TableRow>

<TableRow >

<EditText

    android:id="@+id/lambda01"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="-0.46"

    />

<EditText

    android:id="@+id/lambda11"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="-0.91"

    />

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:text="@string/lambda1"

    />

</TableRow>

<TableRow android:padding="3sp">

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:text="@string/Emax"

    />

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/tolerancia"

    />

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/resolucion"

    />

</TableRow>

<TableRow>

   <EditText

    android:id="@+id/Emax"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="100"

    />

<EditText

    android:id="@+id/tolerancia"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="0.5"

    />

<EditText

    android:id="@+id/resolucion"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="1.e-5"

    />

</TableRow>

<TextView

    android:textColor="@color/textColor"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="J.E. Amaro, 2011"

    />

</TableLayout>   

El ejemplo se puede examinar en la figura 13.3. También vemos aquí cómo añadir ciertos efectos de formato en un layout. Insertando un TextView vacío se produce un espacio vertical. Insertando un View de un color y anchura se dibuja una línea horizontal. Este layout será el punto de partida de la aplicación HandroidPhysics que se presenta en el apéndice C.

Figura 13.3. Utilizando recursos en un layout incluyendo

sub-índices y super-índices.

Ir a la siguiente página

Report Page