En esta página, se definen más tipos de recursos que puedes externalizar, incluidos los siguientes:
- Bool
- Es un recurso XML que contiene un valor booleano.
- Color
- Es un recurso XML que contiene un valor de color (un color hexadecimal).
- Dimensión
- Es un recurso XML que lleva un valor de dimensión (con una unidad de medida).
- ID
- Es un recurso XML que proporciona un identificador único para los recursos y componentes de la aplicación.
- Entero
- Es un recurso XML que contiene un valor entero.
- Array de enteros
- Es un recurso XML que proporciona un array de números enteros.
- Array escrito
- Es un recurso XML que proporciona un
TypedArray
(que puedes usar para un array de elementos de diseño).
Bool
Es un valor booleano definido en formato XML.
Nota: Un bool es un recurso simple al que se hace referencia utilizando el valor proporcionado en el atributo name
(no el nombre del archivo en formato XML). Por lo tanto, puedes combinar recursos bool con otros recursos simples en el archivo en formato XML, en un elemento <resources>
.
- ubicación del archivo:
res/values/filename.xml
El nombre del archivo es arbitrario. Se usará elname
del elemento<bool>
como ID del recurso.- referencia del recurso:
-
En Java:
R.bool.bool_name
En XML:@[package:]bool/bool_name
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="bool_name" >[true | false]</bool> </resources>
- elementos:
- ejemplo:
- Archivo en formato XML guardado en
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>
Este código de la aplicación obtiene el valor booleano:
Kotlin
val screenIsSmall: Boolean =
resources
.getBoolean
(R.bool.screen_small)Java
Resources res =
getResources()
; boolean screenIsSmall = res.getBoolean
(R.bool.screen_small);Este diseño XML utiliza el valor booleano para un atributo:
<ImageView android:layout_height="fill_parent" android:layout_width="fill_parent" android:src="@drawable/logo" android:adjustViewBounds="@bool/adjust_view_bounds" />
Color
Es un valor de color definido en XML.
El color se especifica con un valor RGB y un canal Alfa. Puedes usar un recurso de color en cualquier lugar que acepte un valor de color hexadecimal. También puedes usar un recurso de color cuando se espera un recurso de elemento de diseño en XML (por ejemplo, android:drawable="@color/green"
).
El valor siempre comienza con un carácter numeral (#), seguido de la información Alfa-Red-Green-Blue (Alfa-Rojo-Verde-Azul) en uno de los siguientes formatos:
- #RGB
- #ARVA
- #RRVVAA
- #AARRGGBB
Nota: Un color es un recurso simple al que se hace referencia utilizando el valor proporcionado en el atributo name
(no el nombre del archivo en formato XML). Por lo tanto, puedes combinar recursos de color con otros recursos simples en un archivo en formato XML, bajo un elemento <resources>
.
- ubicación del archivo:
res/values/colors.xml
El nombre del archivo es arbitrario. Se usará elname
del elemento<color>
como ID del recurso.- referencia del recurso:
-
En Java:
R.color.color_name
En XML:@[package:]color/color_name
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_name" >hex_color</color> </resources>
- elementos:
- ejemplo:
- Archivo en formato XML guardado en
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>
Este código de la aplicación obtiene el recurso de color:
Kotlin
val color: Int =
resources
.getColor
(R.color.opaque_red)Java
Resources res =
getResources()
; int color = res.getColor
(R.color.opaque_red);Este diseño XML aplica el color a un atributo:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/translucent_red" android:text="Hello"/>
Dimensión
Es un valor de dimensión definido en XML. Se especifica una dimensión con un número seguido de una unidad de medida. Por ejemplo: 10 px, 2 in, 5 sp. Android admite las siguientes unidades de medida:
dp
- Píxeles independientes de la densidad: Es una unidad abstracta que se basa en la densidad física de la pantalla. Estas unidades son relativas a una pantalla de 160 DPI (puntos por pulgada), en la que 1 dp es aproximadamente 1 px. Cuando se utiliza una pantalla de mayor densidad, el número de píxeles que se usa para dibujar 1 dp se escala por un factor apropiado con respecto a los DPI de la pantalla. Del mismo modo, cuando se utiliza una pantalla de menor densidad, se reduce el número de píxeles usados para 1 dp. La proporción entre un dp y un píxel cambiará con la densidad de la pantalla, pero no necesariamente de manera directa. Usar unidades dp (en lugar de unidades px) es una solución simple para hacer que las dimensiones de la vista en tu diseño cambien de tamaño de manera adecuada en las diferentes densidades de pantalla. En otras palabras, proporciona coherencia para los distintos tamaños del mundo real que tienen los elementos de la IU en diferentes dispositivos.
sp
- Píxeles escalables: Es similar a la unidad dp, pero también se ajusta según la preferencia de tamaño de fuente del usuario. Se recomienda usar esta unidad cuando se especifiquen tamaños de fuente, de modo que se ajusten tanto para la densidad de la pantalla como para la preferencia del usuario.
pt
- Puntos: 1/72 de pulgada en función del tamaño físico de la pantalla, en el caso de pantallas con densidad de 72 DPI.
px
- Píxeles: Corresponde a los píxeles reales en la pantalla. No se recomienda esta unidad de medida porque la representación real puede variar entre dispositivos; distintos dispositivos pueden tener una dimensión diferente de píxeles por pulgada y pueden tener más o menos píxeles totales disponibles en la pantalla.
mm
- Milímetros: Según el tamaño físico de la pantalla
in
- Pulgadas: Según el tamaño físico de la pantalla
Nota: Una dimensión es un recurso simple al que se hace referencia utilizando el valor proporcionado en el atributo name
(no el nombre del archivo en formato XML). Por lo tanto, puedes combinar recursos de dimensión con otros recursos simples en un archivo en formato XML bajo un elemento <resources>
.
- ubicación del archivo:
res/values/filename.xml
El nombre del archivo es arbitrario. Se usará elname
del elemento<dimen>
como ID del recurso.- referencia del recurso:
-
En Java:
R.dimen.dimension_name
En XML:@[package:]dimen/dimension_name
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="dimension_name" >dimension</dimen> </resources>
- elementos:
- ejemplo:
- Archivo en formato 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 la aplicación obtiene una dimensión:
Kotlin
val fontSize: Float =
resources
.getDimension
(R.dimen.font_size)Java
Resources res =
getResources()
; float fontSize = res.getDimension
(R.dimen.font_size);Este diseño XML aplica dimensiones a los atributos:
<TextView android:layout_height="@dimen/textview_height" android:layout_width="@dimen/textview_width" android:textSize="@dimen/font_size"/>
ID
Es un ID de recurso único definido en XML. Usando el nombre que proporcionas en el elemento <item>
, las herramientas para desarrolladores de Android crean un número entero único en la clase R.java
de tu proyecto, que puedes usar como identificador para los recursos de una aplicación (por ejemplo, un View
en tu diseño de IU) o un número entero único para usar en el código de tu aplicación (por ejemplo, como ID para un diálogo o un código de resultado).
Nota: Un ID es un recurso simple al que se hace referencia mediante el valor proporcionado en el atributo name
(no el nombre del archivo en formato XML). Por lo tanto, puedes combinar recursos de ID con otros recursos simples en el único archivo en formato XML bajo un elemento <resources>
. Además, recuerda que los recursos de un ID no hacen referencia a un elemento de recurso real; solo representan una identificación única que puedes adjuntar a otros recursos o usar como un número entero único en tu aplicación.
- ubicación del archivo:
res/values/filename.xml
El nombre del archivo es arbitrario.- referencia del recurso:
-
En Java:
R.id.name
En XML:@[package:]id/name
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="id_name" /> </resources>
- elementos:
- ejemplo:
-
Archivo en formato 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>
A continuación, este fragmento de diseño utiliza el ID "button_ok" para un widget Botón:
<Button android:id="@id/button_ok" style="@style/button_style" />
Observa que el valor
android:id
no incluye el signo más en la referencia de ID, porque el ID ya existe, como se define en el ejemplo anterior deids.xml
. (Cuando se especifica un ID para un recurso XML con el signo +, en formatoandroid:id="@+id/name"
, significa que el ID de "name" no existe y se debe crear).Otro ejemplo: El siguiente fragmento de código usa el ID "dialog_exit" como identificador único para un diálogo:
Kotlin
showDialog
(R.id.dialog_exit)Java
showDialog
(R.id.dialog_exit);En la misma aplicación, se compara el ID "dialog_exit" cuando se crea un diálogo:
Kotlin
override fun
onCreateDialog
(id: Int): Dialog? { return when(id) { R.id.dialog_exit -> { ... } else -> { null } } }Java
protected Dialog
onCreateDialog
(int id) { Dialog dialog; switch(id) { case R.id.dialog_exit: ... break; default: dialog = null; } return dialog; }
Entero
Es un entero definido en XML.
Nota: Un número entero es un recurso simple al que se hace referencia mediante el valor proporcionado en el atributo name
(no el nombre del archivo en formato XML). Por lo tanto, puedes combinar recursos enteros con otros recursos simples en un archivo en formato XML bajo un elemento <resources>
.
- ubicación del archivo:
res/values/filename.xml
El nombre del archivo es arbitrario. Se usará elname
del elemento<integer>
como ID del recurso.- referencia del recurso:
-
En Java:
R.integer.integer_name
En XML:@[package:]integer/integer_name
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="integer_name" >integer</integer> </resources>
- elementos:
- ejemplo:
-
Archivo en formato 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 obtiene un número entero:
Kotlin
val maxSpeed: Int =
resources
.getInteger
(R.integer.max_speed)Java
Resources res =
getResources()
; int maxSpeed = res.getInteger
(R.integer.max_speed);
Array de enteros
Un array de enteros definidos en XML.
Nota: Un array de enteros es un recurso simple al que se hace referencia utilizando el valor proporcionado en el atributo name
(no el nombre del archivo en formato XML). Por lo tanto, puedes combinar recursos de array de números enteros con otros recursos simples en el único archivo en formato XML bajo un elemento <resources>
.
- ubicación del archivo:
res/values/filename.xml
El nombre del archivo es arbitrario. Se usará elname
del elemento<integer-array>
como ID del recurso.- tipo de datos de recursos compilados:
- Puntero del recurso a un array de números enteros.
- referencia del recurso:
-
En Java:
R.array.integer_array_name
En XML:@[package:]array/integer_array_name
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="integer_array_name"> <item >integer</item> </integer-array> </resources>
- elementos:
- ejemplo:
- Archivo en formato 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 la aplicación obtiene el array de números enteros:
Kotlin
val bits: IntArray =
resources
.getIntArray
(R.array.bits)Java
Resources res =
getResources()
; int[] bits = res.getIntArray
(R.array.bits);
Array escrito
Es un TypedArray
definido en XML. Puedes utilizar esta opción para crear un array de otros recursos, como los elementos de diseño. Ten en cuenta que no es necesario que el array sea homogéneo. Por lo tanto, puedes crear un array de tipos de recursos mixtos, pero debes conocer los tipos de datos que incluye para poder obtener cada elemento con los métodos get...()
de TypedArray
.
Nota: Un array escrito es un recurso simple al que se hace referencia mediante el valor proporcionado en el atributo name
(no el nombre del archivo en formato XML). Por lo tanto, puedes combinar recursos de array escrito con otros recursos simples en un archivo en formato XML bajo un elemento <resources>
.
- ubicación del archivo:
res/values/filename.xml
El nombre del archivo es arbitrario. Se usará elname
del elemento<array>
como ID del recurso.- tipo de datos de recursos compilados:
- Puntero de recursos a un
TypedArray
. - referencia del recurso:
-
En Java:
R.array.array_name
En XML:@[package:]array/array_name
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="integer_array_name"> <item>resource</item> </array> </resources>
- elementos:
- ejemplo:
- Archivo en formato 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 la aplicación obtiene cada array y, luego, la primera entrada de cada uno de ellos:
Kotlin
val icons: TypedArray =
resources
.obtainTypedArray
(R.array.icons) val drawable: Drawable = icons.getDrawable
(0) val colors: TypedArray =resources
.obtainTypedArray
(R.array.colors) val color: Int = colors.getColor
(0,0)Java
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);