Otros Tipos de Recursos

Otros tipos de recursos que se pueden externalizar son:

  • Bool: Recurso XML que porta un valor boolean.
  • Color; Recurso XML que porta un valor de color (un color en hexadecimal).
  • Dimension: Recurso XML que porta un valor de dimensión (con una unidad de medida).
  • ID: Recurso XML que provee un identificador único para recursos y componentes de aplicación.
  • Integer: Recurso XML que porta un valor entero.
  • Integer Array: Recurso XML que porta un array de enteros.
  • Typed Array: Recurso XML que porta un TypedArray (que puedes usar para hacer un array de drawables).

Bool

Un valor boolean definido en XML.

Nota: Un bool es un simple recurso al que se hace referencia usando el valor provisto en el atributo nombre (no el nombre del fichero XML). Así puedes combinar recursos bool con otros recursos simples en un fichero XML, bajo un elemento <resources>.

localización del fichero:
res/values/nombre_fichero.xmlEl nombre_fichero es arbitrario. El nombre del elemento <bool> será usado como ID de recurso.
referenciando el recurso:
En Java: R.bool.nombre_boolEn XML: @[paquete:]bool/nombre_bool
sintaxis:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool
        name="nombre_bool"
        >[true | false]</bool>
</resources>
elementos:
  • <resources> Requerido. Debe ser el nodo raíz. Sin atributos.
  • <bool> Un valor boolean: true o false.

atributos:

  • name String. Un nombre para el valor boolean. Se usará como ID del recurso.
ejemplo:
Fichero XML guardado en res/values-small/bools.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="pantalla_pequeña">true</bool>
    <bool name="ajustar_limites_vision">true</bool>
</resources>

Este código de aplicación recupera los boolean:

Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.pantalla_pequeña);

Este XML de layout usa el valor boolean para un atributo:

<ImageView
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:src="@drawable/logo"
    android:adjustViewBounds="@bool/ajustar_limites_vision" />

Color

Un valor de color definido en XML.
El color se especifica con un valor RGB y canal alfa. Puedes usar un recurso de color en cualquier lugar que acepte un valor de color exadecimal. Puedes usar un recurso de color cuando se espera un recurso drawable en XML (por ejemplo, android:drawable="@color/verde").

El valor siempre empieza con una almohadilla (#) y seguido por la información Alfa-Rojo-Verde-Azul en uno de los siguientes formatos:

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

Nota: Un color es un recurso sencillo al que se referencia usando el valor provisto en el atributo nombre (no el nombre del fichero XML). Así se puede combinar recursos de color con otros recursos sencillos en un fichero XML, bajo un elemento <resources>.

localización del fichero:
res/values/colors.xml El nombre del fichero es arbitrario. El nombre del elemento <color> se usará como ID del recurso.
referenciando el recurso:
En Java: R.color.nombre_colorEn XML: @[paquete:]color/nombre_color
sintaxis:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color
        name="nombre_color"
        >color_en_hexadecimal</color>
</resources>
elementos:
  • <resources>Requerido. Debe ser el nodo raíz. Sin atributos.
  • <color> Un color expresado en hexadecimal, como se describió arriba.

atributos:

  • name String. Un nombre para el color. Se usará como ID del recurso.
ejemplo:
Fichero XML guardado en res/values/colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="rojo_opaco">#f00</color>
   <color name="rojo_transparente">#80ff0000</color>
</resources>

Este código de aplicación recupera el recurso de color:

Resources res = getResources();
int color = res.getColor(R.color.rojo_opaco);

Este XML de layout aplica el color a un atributo:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/rojo_transparente"
    android:text="Hello"/>

Dimension

Un valor de dimensión definido en XML. Una dimensión viene especificada por un número seguido de una unidad de medida.
Por ejemplo: 10px, 2in, 5sp. Las siguientes unidades de medida son las soportadas en Android:

  • dp: Pixels independientes de la Densidad – Una unidad abstracta basada en la densidad física de la pantalla. Estas unidades son relativas a una pantalla 160 dpi (puntos por pulgada), en la cual 1dp equivale aproximadamente a 1px. Cuando se ejecute en una pantalla de mayor densidad, el número de pixels usados para dibujar 1dp aumentará proporcionalmente a la dpi de la pantalla. Similarmente, cuando se ejecute en una pantalla de inferior densidad, el número de pixels usados para 1dp se reducirá proporcionalmente. El ratio de dp-a-pixel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. Usar unidades dp (en lugar de unidades px) es una solución sencilla para hacer que las dimensiones de los widgets en tu layout se redimensione adecuadamente para diferentes densidades de pantalla. En otras palabras, proporciona consistencia a tus elementos de IU para las pantallas del mundo real de diferentes dispositivos.
  • sp: Pixels independientes de Escala – Parecida a la unidad dp, pero también se escalan en función a la preferencia de tamaño de fuente del usuario. Esta unidad está recomendada para especificar los tamaños de fuentes, para que así queden ajustadas tanto a la densidad de la pantalla como a la preferencia del usuario.

pt: Puntos – 1/72 de una pulgada basado en el tamaño físico de la pantalla.px: Pixels -Se corresponde a los pixeles reales de la pantalla. Esta unidad de medida no se recomienda debido a que la representación real puede variar entre dispositivos; cada dispositivo puede tener un número de pixels por pulgada diferente y puede tener mas o menos pixels totales disponibles en la pantalla.

  • mm: Milímetros – Basado en el tamaño físico de la pantalla.
  • in: Pulgadas – Basado en el tamaño físico de la pantalla.

Nota: Una dimensión es un recurso sencillo al que se hace referencia usando el valor provisto en el atributo nombre (no el nombre del fichero XML). Así puedes combinar recursos de dimensión con otros recursos sencillos en un fichero XML, bajo un elemento <resources>.

localización del fichero:
res/values/nombrefichero.xml El nombrefichero es arbitrario. El nombre del elemento <dimen> se usará como ID de recurso.
referenciando el recurso:
En Java: R.dimen.nombre_dimensión
En XML: @[paquete:]dimen/nombre_dimension
sintaxis:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen
        name="nombre_dimension"
        >dimension</dimen>
</resources>
elementos:
  • <resources> Requerido. Este debe ser el nodo raíz. Sin atributos.
  • <dimen> Una dimensión, representada por un valor flotante seguido de una unidad de medida (dp, sp, pt, px, mm, in),como se describió arriba.

atributos:

  • name String. Un nombre para la dimensión. Se usará como ID del recurso.
ejemplo:
Fichero XML guardado en 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>

Este código de aplicación recupera una dimensión:

Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);

Este XML de layout aplica dimensiones a atributos:

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>

ID

Un recurso único de ID definido en XML. Usando el nombre que se prové en el elemento <item>, las herramientas de desarrollador Android crean un entero único en la clase R.java de tu proyecto, que puedes usar como identificador para un recurso de aplicación (por ejemplo, una View en tu diseño de IU) o un entero único que usar en tu código de aplicación (por ejemplo, como ID para un diálogo o código de resultado).

Nota: Un ID es un recurso sencillo al que se puede hacer referencia usando el valor provisto en el atributo nombre (no el nombre del fichero XML). así puedes combinar recursos ID con otros recursos sencillos en un fichero XML, bajo un elemento <resources> . Además, recuerda que un recurso ID no hace referencia a un elemento real, es meramente un ID único que puedes asignarle a otros recursos o usar como entero único en tu aplicación.

localización del ficehro:
res/values/nombrefichero.xml El nombrefichero es arbitrario.
referenciando el recurso:
En Java: R.id.nombre
In XML: @[paquete:]id/nombre
sintaxis:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_name" />
</resources>
elementos:
  • <resources> Requerido. Debe ser el nodo raiz. Sin atributos.
  • <item> Define un ID único. No toma valores, sólo atributos.

atributos:

  • type Debe ser “id”.
  • name String. Un nombre único para el ID.
ejemplo:
Fichero XML guardado en 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>

Este fragmento de layout usa el ID “button_ok” para un widget Button:

<Button android:id="@id/button_ok"
    style="@style/button_style" />

Date cuenta que el valor android:id no incluye el “+” en la referencia al ID porque el ID ya existe, al estar definido en el ejemplo de ids.xml del ejemplo anterior (Cuando especificas un ID a un recurso XML usando el signo “+” – en el formato android:id="@+id/nombre"—quiere decir que el ID “nombre” no existe y debe ser creado.)

Otro ejemplo: el siguiente fragmento de código usa el ID “dialog_exit” ID como identificador único para un diálogo:

showDialog(R.id.dialog_exit);

En la misma aplicación, el ID “dialog_exit” se compara a la hora de crear un diálogo:

protected Dialog onCreateDialog(int id) {
    Dialog dialog;
    switch(id) {
    case R.id.dialog_exit:
        ...
        break;
    default:
        dialog = null;
    }
    return dialog;
}

Integer

Un entero definido en XML.

Nota: Un entero es un recurso sencillo al que se hace referencia usando el valor provisto en el atributo nombre (no el nombre del fichero XML). De ese modo puedes combinar recursos enteros con otros recursos sencillos en un fichero XML bajo un elemento <resources>

localización del fichero:
res/values/nombrefichero.xml El nombrefichero es arbitrario. El nombre del elemento <integer> se usará como el ID del recurso .
referenciando el recurso:
En Java: R.integer.nombre_integer
In XML: @[paquete:]integer/nombre_integer
sintaxis:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer
        name="nombre_integer"
        >integer</integer>
</resources>
elementos:
  • <resources> Requerido. Debe ser el nodo raíz. Sin atributos.
  • <integer> Un entero.

atributos:

  • name String. Un nombre para el entero. Se usará como ID del recurso.
ejemplo:
Fichero XML guardado en 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>

Este código de aplicación recupera un entero:

Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);

Integer Array

Un array de enteros definido en XML.

Nota: Un array de enteros es un recurso sencillo al que se hace referencia usando el valor provisto en el atributo nombre (no el nombre del fichero XML). De ese modo puedes combinar recursos arrays de enteros con otros recursos sencillos en un fichero XML bajo un elemento <resources>

localización del fichero:
res/values/nombrefichero.xml El nombrefichero es arbitrario. El nombre del elemento <integer-array> se usará como ID del recurso.
tipo de dato del recurso compilado:
Puntero a un array de enteros.
referenciando el recurso:
En Java: R.array.nombre_array_enteros
En XML: @[paquete:]array.nombre_array_enteros
sintaxis:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array
        name="nombre_array_enteros">
        <item
            >integer</item>
    </integer-array>
</resources>
elementos:
  • <resources> >Requerido. Debe ser el nodo raíz. Sin atributos.
  • <string-array> Define un array de enteros. Contiene uno o mas elementos hijos <item>.

atributos:

  • android:name String. Un nombre para el array. Este nombre se usará como ID del recurso para referirse al array.
  • <item> Un entero. El valor puede ser una referencia a otro recurso entero. Debe ser hijo de un elemento <integer-array>. Sin atributos.
ejemplo:
Fichero XML guardado en 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>

Este código de aplicación recupera el array de enteros:

Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);

Typed Array

Un TypedArray definido en XML. Puedes usarlo para crear un array de otros recursos, tales como drawables. Ten en cuenta que no se requiere que el array sea homogéneo, por lo que puedes crear un array mixto de diferentes tipos de recursos, pero debes ser consciente de qué tipo de dato va dónde en el array para obtener cada elemento adecuadamente con los métodos get…() de TypedArray.

Nota: Un array de tipos es un recurso sencillo al que se hace referencia usando el valor provisto en el atributo nombre (no el nombre del fichero XML). De ese modo puedes combinar recursos arrays de tipos con otros recursos sencillos en un fichero XML bajo un elemento <resources>

localización de fichero:
res/values/nombrefichero.xml El nombrefichero es arbitrario. El nombre del elemento <array> se usará como el ID del recurso .
tipo de datos del recurso compilado:
Puntero a TypedArray.
referenciando el recurso:
En Java: R.array.nombre_array
En XML: @[paquete:]array.nombre_array
sintaxis:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array
        name="nombre_array">
        <item>recurso</item>
    </array>
</resources>
elementos:
  • <resources>Requerido. Este debe ser el nodo raíz. Sin atributos.
  • <array> Define un array. Contiene uno o mas elementos hijos <item>

.

atributos:

  • android:name String. Un nombre para el array. Este nombre se usará como ID para referenciar el array.
  • <item> Un recurso genérico. El valor puede ser una referencia a un recurso o un tipo de dato simple. Debe ser hijo de un elemento <array>. Sin atributos.
ejemplo:
Fichero XML guardado en 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>

Este código de aplicación recupera cada array y obtiene la primera entrada de cada array:

Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);

TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: