Questa pagina definisce i seguenti tipi di risorse che puoi esternalizzare:
- Bol
- Risorsa XML che trasporta un valore booleano.
- Colore
- Risorsa XML che trasporta un valore di colore (un colore esadecimale).
- Dimensione
- Risorsa XML che trasporta un valore di dimensione (con un'unità di misura).
- ID
- Risorsa XML che fornisce un identificatore univoco per le risorse e i componenti dell'applicazione.
- Numero intero
- Risorsa XML che trasporta un valore intero.
- Array intero
- Risorsa XML che fornisce un array di numeri interi.
- Array digitato
- Risorsa XML che fornisce un valore
TypedArray
(che puoi utilizzare per un array di disegnabili).
Bool
Un valore booleano definito in XML.
Nota: bool è una risorsa semplice a cui viene fatto riferimento utilizzando il valore fornito nell'attributo name
, non il nome del file XML. Di conseguenza, puoi combinare le risorse bool con altre risorse semplici in un file XML, in un unico elemento <resources>
.
- percorso file:
res/values/filename.xml
Il nome del file è arbitrario. L'elementoname
dell'elemento<bool>
viene utilizzato come ID risorsa.- riferimento risorsa:
-
In Java:
R.bool.bool_name
In XML:@[package:]bool/bool_name
- :
-
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="bool_name" >[true | false]</bool> </resources>
- :
- esempio:
- File XML salvato in
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>
Il seguente codice applicazione recupera il valore booleano:
Kotlin
val screenIsSmall: Boolean =
resources
.getBoolean
(R.bool.screen_small)Java
Resources res =
getResources()
; boolean screenIsSmall = res.getBoolean
(R.bool.screen_small);Il seguente file XML di layout utilizza un valore booleano per un attributo:
<ImageView android:layout_height="fill_parent" android:layout_width="fill_parent" android:src="@drawable/logo" android:adjustViewBounds="@bool/adjust_view_bounds" />
Colore
Un valore di colore definito nel file XML.
Il colore viene specificato utilizzando un valore RGB e un canale alfa. Puoi usare una risorsa colore
in qualsiasi punto che accetti un valore colore esadecimale. Puoi utilizzare una risorsa colore anche quando è prevista una risorsa disegnabile in XML, ad esempio android:drawable="@color/green"
.
Il valore inizia sempre con un carattere cancelletto (#), seguito dalle informazioni Alfa-Rosso-Verde-Blu in uno dei seguenti formati:
- #RGB
- #ARGB
- N. RRGGBB
- #AARRGGBB
Nota: un colore è una risorsa semplice a cui viene fatto riferimento tramite il valore fornito nell'attributo name
, non il nome del file XML. Di conseguenza, puoi combinare le risorse colore con altre risorse semplici in un unico file XML, in un unico elemento <resources>
.
- percorso file:
res/values/colors.xml
Il nome del file è arbitrario. L'elementoname
dell'elemento<color>
viene utilizzato come ID risorsa.- riferimento risorsa:
-
In Java:
R.color.color_name
In XML:@[package:]color/color_name
- :
-
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_name" >hex_color</color> </resources>
- :
- esempio:
- File XML salvato in
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>
Il seguente codice dell'applicazione recupera la risorsa colore:
Kotlin
val color: Int =
resources
.getColor
(R.color.opaque_red)Java
Resources res =
getResources()
; int color = res.getColor
(R.color.opaque_red);Il seguente codice XML di layout applica il colore a un attributo:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/translucent_red" android:text="Hello"/>
Dimensione
Un valore di dimensione definito in XML. Una dimensione è specificata con un numero seguito da un'unità di misura, ad esempio 10 px, 2 pollici o 5 sp. Android supporta le seguenti unità di misura:
dp
- Pixel indipendenti dalla densità: un'unità astratta che si basa sulla densità fisica dello schermo. Queste unità sono relative a uno schermo di 160 dpi (punti per pollice), in cui 1 dp corrisponde all'incirca a 1 px. Quando si esegue l'esecuzione su uno schermo a densità più elevata, il numero di pixel utilizzati per disegnare 1 dp viene aumentato di un fattore appropriato per i DPI dello schermo.
Analogamente, su uno schermo a bassa densità, il numero di pixel utilizzati per 1 dp viene ridotto. Il rapporto tra dps e pixel varia con la densità dello schermo, ma non necessariamente in proporzione diretta. L'utilizzo di unità dp invece di unità px è una soluzione per far sì che le dimensioni della vista nel layout vengano ridimensionate correttamente in base alle diverse densità dello schermo. Garantisce coerenza per le dimensioni reali degli elementi dell'interfaccia utente su dispositivi diversi.
sp
- Pixel indipendenti dalla scala: è simile all'unità dp, ma viene ridimensionata anche in base alla preferenza relativa alle dimensioni del carattere dell'utente. Si consiglia di utilizzare questa unità per specificare le dimensioni dei caratteri, in modo che vengano regolate sia in base alla densità dello schermo sia in base alle preferenze dell'utente.
pt
- Punti: 1/72 di pollice in base alle dimensioni fisiche dello schermo, supponendo che abbia una densità di 72 dpi.
px
- Pixel: corrisponde ai pixel effettivi sullo schermo. Non è consigliabile utilizzare questa unità, perché la rappresentazione effettiva può variare da un dispositivo all'altro. Dispositivi diversi possono avere un numero diverso di pixel per pollice e avere più o meno pixel totali disponibili sullo schermo.
mm
- Millimetri: si basano sulle dimensioni fisiche dello schermo.
in
- Pollici: basati sulle dimensioni fisiche dello schermo.
Nota: una dimensione è una risorsa semplice a cui viene fatto riferimento tramite il valore fornito nell'attributo name
, non il nome del file XML. Di conseguenza, puoi combinare le risorse di dimensione con altre risorse semplici in un unico file XML, in un unico elemento <resources>
.
- percorso file:
res/values/filename.xml
Il nome del file è arbitrario. L'elementoname
dell'elemento<dimen>
viene utilizzato come ID risorsa.- riferimento risorsa:
-
In Java:
R.dimen.dimension_name
In XML:@[package:]dimen/dimension_name
- :
-
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="dimension_name" >dimension</dimen> </resources>
- :
- esempio:
- File XML salvato in
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>
Il seguente codice applicazione recupera una dimensione:
Kotlin
val fontSize: Float =
resources
.getDimension
(R.dimen.font_size)Java
Resources res =
getResources()
; float fontSize = res.getDimension
(R.dimen.font_size);Il seguente XML di layout applica le dimensioni agli attributi:
<TextView android:layout_height="@dimen/textview_height" android:layout_width="@dimen/textview_width" android:textSize="@dimen/font_size"/>
ID
Un ID risorsa univoco definito in XML. Utilizzando il nome fornito nell'elemento <item>
, gli strumenti per sviluppatori Android creano un numero intero univoco nella classe R.java
del progetto, che puoi utilizzare come identificatore per le risorse di un'applicazione, ad esempio View
nel layout dell'interfaccia utente, oppure un numero intero univoco da utilizzare nel codice dell'applicazione, ad esempio un ID per una finestra di dialogo o un codice risultato.
Nota: un ID è una risorsa semplice a cui viene fatto riferimento tramite il valore fornito nell'attributo name
, non il nome del file XML. Di conseguenza, puoi combinare le risorse ID con altre risorse semplici in un file XML, in un unico elemento <resources>
. Inoltre, una risorsa ID non fa riferimento
a un elemento risorsa effettivo, ma è un ID univoco che puoi collegare ad altre risorse o utilizzare
come numero intero univoco nell'applicazione.
- percorso file:
res/values/filename.xml
Il nome del file è arbitrario.- riferimento risorsa:
-
In Java:
R.id.name
In XML:@[package:]id/name
- :
-
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="id_name" /> </resources>
- :
- esempio:
-
File XML salvato all'indirizzo
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>
Il seguente snippet di layout utilizza l'ID
"button_ok"
per un widgetButton
:<Button android:id="@id/button_ok" style="@style/button_style" />
Il valore
android:id
qui non include il segno più nel riferimento all'ID, perché l'ID esiste già, come definito nell'esempioids.xml
precedente. Quando specifichi un ID per una risorsa XML utilizzando il segno più, nel formatoandroid:id="@+id/name"
, significa che l'ID"name"
non esiste ancora e viene creato.Come ulteriore esempio, il seguente snippet di codice utilizza l'ID
"dialog_exit"
come identificatore univoco per una finestra di dialogo:Kotlin
showDialog
(R.id.dialog_exit)Java
showDialog
(R.id.dialog_exit);Nella stessa applicazione, l'ID
"dialog_exit"
viene confrontato durante la creazione di una finestra di dialogo: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; }
Numero intero
Un numero intero definito in XML.
Nota: un numero intero è una risorsa semplice a cui viene fatto riferimento tramite il valore fornito nell'attributo name
, non il nome del file XML. Di conseguenza, puoi combinare risorse di numeri interi con altre risorse semplici in un file XML, in un unico elemento <resources>
.
- percorso file:
res/values/filename.xml
Il nome del file è arbitrario. L'elementoname
dell'elemento<integer>
viene utilizzato come ID risorsa.- riferimento risorsa:
-
In Java:
R.integer.integer_name
In XML:@[package:]integer/integer_name
- :
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="integer_name" >integer</integer> </resources>
- :
- esempio:
-
File XML salvato all'indirizzo
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>
Il seguente codice applicazione recupera un numero intero:
Kotlin
val maxSpeed: Int =
resources
.getInteger
(R.integer.max_speed)Java
Resources res =
getResources()
; int maxSpeed = res.getInteger
(R.integer.max_speed);
Array di numeri interi
Un array di numeri interi definiti in XML.
Nota: un array di numeri interi è una risorsa semplice a cui viene fatto riferimento tramite il valore fornito nell'attributo name
, non il nome del file XML. Di conseguenza, puoi combinare risorse di array di numeri interi con altre risorse semplici in un file XML, in un unico elemento <resources>
.
- percorso file:
res/values/filename.xml
Il nome del file è arbitrario. L'elementoname
dell'elemento<integer-array>
viene utilizzato come ID risorsa.- tipo di dati della risorsa compilata:
- Puntatore di risorsa a un array di numeri interi.
- riferimento risorsa:
-
In Java:
R.array.integer_array_name
In XML:@[package:]array/integer_array_name
- :
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="integer_array_name"> <item >integer</item> </integer-array> </resources>
- :
- esempio:
- File XML salvato in
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>
Il seguente codice applicazione recupera l'array di numeri interi:
Kotlin
val bits: IntArray =
resources
.getIntArray
(R.array.bits)Java
Resources res =
getResources()
; int[] bits = res.getIntArray
(R.array.bits);
Array digitato
Un elemento TypedArray
definito in XML. Puoi utilizzarlo per creare un array di altre risorse, ad esempio dei disegnabili. Non è necessario che l'array sia omogeneo, quindi puoi creare un array di tipi di risorse miste, ma fai attenzione a quali tipi di dati si trovano nell'array e a dove si trovano, in modo da ottenere correttamente ogni elemento con i metodi get...()
della classe TypedArray
.
Nota: un array tipizzato è una risorsa semplice a cui viene fatto riferimento tramite il valore fornito nell'attributo name
, non il nome del file XML. Di conseguenza, puoi combinare le risorse array tipizzate con altre risorse semplici in un file XML, in un unico elemento <resources>
.
- percorso file:
res/values/filename.xml
Il nome del file è arbitrario. L'elementoname
dell'elemento<array>
viene utilizzato come ID risorsa.- tipo di dati della risorsa compilata:
- Puntatore di risorsa a un
TypedArray
. - riferimento risorsa:
-
In Java:
R.array.array_name
In XML:@[package:]array/array_name
- :
-
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="integer_array_name"> <item>resource</item> </array> </resources>
- :
- esempio:
- File XML salvato in
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>
Il seguente codice applicazione recupera ogni array e quindi ottiene la prima voce in ogni array:
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);