Altri tipi di risorse

Questa pagina definisce i seguenti tipi di risorse che puoi esternalizzare:

Bool
Risorsa XML che trasporta un valore booleano.
Colore
Risorsa XML che porta un valore 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 dell'applicazione e componenti.
Numero intero
Risorsa XML che contiene un valore intero.
Array intero
Risorsa XML che fornisce un array di numeri interi.
Array digitato
Risorsa XML che fornisce un TypedArray (che puoi utilizzare per un array di drawable).

Bool

Un valore booleano definito in XML.

Nota: un bool è una risorsa semplice a cui viene fatto riferimento utilizzando il valore fornito nell'attributo name, non il nome del file XML. Come Ad esempio, puoi combinare le risorse bool con altre semplici risorse in un unico file XML, sotto un solo elemento <resources>.

percorso del file:

res/values/filename.xml
Il nome file è arbitrario. L'elemento name dell'elemento <bool> viene utilizzato come risorsa ID.
riferimento della risorsa:
In Java: R.bool.bool_name
In XML: @[package:]bool/bool_name
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool
        name="bool_name"
        >[true | false]</bool>
</resources>
elementi:
<resources>
Obbligatorio. che è il nodo radice.

Nessun attributo.

<bool>
Un valore booleano: true o false.

Attributi:

name
Stringa. Un nome per il valore bool. Viene utilizzato come ID risorsa.
esempio:
File XML salvato alle ore 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 dell'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 il 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 in XML. Il colore viene specificato utilizzando un valore RGB e un canale alfa. Puoi utilizzare una risorsa colore in tutti i luoghi che accettano un valore colore esadecimale. Puoi utilizzare una risorsa colore anche quando risorsa drawable prevista in XML, ad esempio android:drawable="@color/green".

Il valore inizia sempre con un carattere cancelletto (#), seguito dal carattere Informazioni su Alfa-Rosso-Verde-Blu in uno dei seguenti formati:

  • #RGB
  • #ARGB
  • N. RRGGBB
  • N. AARRGGBB

Nota: un colore è una risorsa semplice a cui viene fatto riferimento utilizzando il valore fornito nell'attributo name, non il nome del file XML. Come ad esempio, puoi combinare le risorse colore con altre semplici risorse in un unico file XML, sotto un solo elemento <resources>.

percorso del file:

res/values/colors.xml
Il nome file è arbitrario. L'elemento name dell'elemento <color> viene utilizzato come dell'ID risorsa.
riferimento della risorsa:
In Java: R.color.color_name
In XML: @[package:]color/color_name
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color
        name="color_name"
        >hex_color</color>
</resources>
elementi:
<resources>
Obbligatorio. che è il nodo radice.

Nessun attributo.

<color>
Un colore espresso in formato esadecimale.

Attributi:

name
Stringa. Un nome per il colore. Viene utilizzato come ID risorsa.
esempio:
File XML salvato alle ore 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 del 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 file 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 viene specificato 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 basata sulla densità fisica dei schermo. Queste unità sono relative a una schermata da 160 dpi (punti per pollice), in cui 1 dp è all'incirca uguale a 1 px. Su uno schermo ad alta densità, viene aumentato il numero di pixel utilizzati per disegnare 1 dp. di un fattore appropriato per i DPI dello schermo.

Analogamente, in una schermata a densità più bassa, il numero di pixel utilizzati per 1 dp viene ridotto. Il rapporto tra dps e pixel cambia con la densità dello schermo. ma non necessariamente in proporzione diretta. Una soluzione consiste nell'utilizzare le unità dp anziché le unità px per ridimensionare correttamente le dimensioni di visualizzazione nel layout in base alle diverse densità dello schermo. Fornisce coerenza per le dimensioni reali degli elementi UI tra diversi dispositivi mobili.

sp
Pixel indipendenti dalla scala: è come l'unità dp, ma viene ridimensionato anche dal carattere dell'utente. preferenza relativa alle dimensioni. È consigliabile utilizzare questa unità per specificare le dimensioni dei caratteri, in modo che vengano regolate sia per la densità dello schermo che per le preferenze dell'utente.
pt
Punti: 1/72 di pollice in base alle dimensioni fisiche dello schermo, ipotizzando uno schermo con densità di 72 dpi.
px
Pixel: corrisponde ai pixel effettivi sullo schermo. Ti consigliamo di non utilizzare questa unità perché la rappresentazione effettiva può variare da un dispositivo all'altro. Dispositivi diversi possono avere un numero di pixel diverso per pollice e la quantità totale di pixel disponibili sullo schermo potrebbe essere superiore o inferiore.
mm
Millimetri: basati sulle dimensioni fisiche dello schermo.
in
Pollici: si basano sulle dimensioni fisiche dello schermo.

Nota: una dimensione è una risorsa semplice a cui viene fatto riferimento utilizzando il valore fornito nell'attributo name, non il nome del file XML. Come Ad esempio, puoi combinare le risorse delle dimensioni con altre semplici risorse in un unico file XML, sotto un solo elemento <resources>.

percorso del file:

res/values/filename.xml
Il nome file è arbitrario. L'elemento name dell'elemento <dimen> viene utilizzato come dell'ID risorsa.
riferimento della risorsa:
In Java: R.dimen.dimension_name
In XML: @[package:]dimen/dimension_name
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen
        name="dimension_name"
        >dimension</dimen>
</resources>
elementi:
<resources>
Obbligatorio. che è il nodo radice.

Nessun attributo.

<dimen>
Una dimensione, rappresentata da un numero in virgola mobile seguito da un'unità di misura (dp, sp, pt, px, mm, in).

Attributi:

name
Stringa. Un nome per la dimensione. Viene utilizzato come ID risorsa.
esempio:
File XML salvato alle ore 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 dell'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 file 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. Utilizzare il nome che fornisci nella sezione <item> , gli strumenti per sviluppatori Android creano un numero intero univoco nella classe R.java del progetto, che puoi utilizzare come per le risorse di un'applicazione, ad esempio View nel layout della UI, o un numero intero univoco da utilizzare nel codice dell'applicazione, ad esempio l'ID di una finestra di dialogo o il codice dei risultati.

Nota: un ID è una risorsa semplice a cui viene fatto riferimento utilizzando il valore fornito nell'attributo name, non il nome del file XML. Come ad esempio, puoi combinare le risorse ID con altre semplici risorse in un unico file XML, sotto un solo elemento <resources>. Inoltre, una risorsa ID non fa riferimento un vero elemento di risorsa: si tratta di un ID univoco che puoi collegare ad altre risorse o utilizzare sotto forma di numero intero univoco nella tua applicazione.

percorso del file:

res/values/filename.xml
Il nome file è arbitrario.
riferimento della risorsa:
In Java: R.id.name
In XML: @[package:]id/name
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_name" />
</resources>
elementi:
<resources>
Obbligatorio. che è il nodo radice.

Nessun attributo.

<item>
Definisce un ID univoco. Non accetta valori, ma solo attributi.

Attributi:

type
Deve essere "id".
name
Stringa. Un nome univoco per l'ID.
esempio:

File XML salvato in 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 widget Button:

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

Il valore android:id qui non include il segno più nel riferimento ID, perché l'ID esiste già, come definito nell'esempio ids.xml precedente. Se specifichi a una risorsa XML utilizzando il segno più, nel formato android:id="@+id/name" Ciò significa che l'ID "name" non esiste ancora ed è stato 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 utilizzando il valore fornito nell'attributo name, non il nome del file XML. Come Ad esempio, puoi combinare risorse intere con altre semplici risorse in un unico file XML, sotto un solo elemento <resources>.

percorso del file:

res/values/filename.xml
Il nome file è arbitrario. L'elemento name dell'elemento <integer> viene utilizzato come dell'ID risorsa.
riferimento della risorsa:
In Java: R.integer.integer_name
In XML: @[package:]integer/integer_name
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer
        name="integer_name"
        >integer</integer>
</resources>
elementi:
<resources>
Obbligatorio. che è il nodo radice.

Nessun attributo.

<integer>
Un numero intero.

Attributi:

name
Stringa. Nome del numero intero. Viene utilizzato come ID risorsa.
esempio:

File XML salvato in 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 dell'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 intero

Un array di numeri interi definiti in XML.

Nota: un array di numeri interi è una risorsa semplice a cui viene fatto riferimento utilizzando il valore fornito nell'attributo name, non il nome del file XML. Come Ad esempio, puoi combinare risorse di array con numeri interi con altre risorse semplici in un unico file XML, sotto un solo elemento <resources>.

percorso del file:

res/values/filename.xml
Il nome file è arbitrario. L'elemento name dell'elemento <integer-array> viene utilizzato come dell'ID risorsa.
tipo di dati della risorsa compilato:
Puntatore della risorsa a un array di numeri interi.
riferimento della risorsa:
In Java: R.array.integer_array_name
In XML: @[package:]array/integer_array_name
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array
        name="integer_array_name">
        <item
            >integer</item>
    </integer-array>
</resources>
elementi:
<resources>
Obbligatorio. che è il nodo radice.

Nessun attributo.

<integer-array>
Definisce un array di numeri interi. Contiene uno o più elementi secondari <item>.

Attributi:

android:name
Stringa. Un nome per l'array. Questo nome viene utilizzato come risorsa per fare riferimento all'array.
<item>
Un numero intero. Il valore può essere un riferimento a un altro una risorsa intera. Deve essere un elemento secondario di un elemento <integer-array>.

Nessun attributo.

esempio:
File XML salvato alle ore 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 dell'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 utilizzare questo per creare un array di altre risorse, come drawable. Non è necessario che l'array sia omogeneo, quindi puoi creare un array di tipi di risorse misti, ma e sapere dove si trovano i tipi di dati nell'array, in modo da poter ottenere correttamente ogni elemento con i metodi get...() della classe TypedArray.

Nota: un array digitato è una risorsa semplice a cui viene fatto riferimento utilizzando il valore fornito nell'attributo name, non il nome del file XML. Come Ad esempio, puoi combinare risorse array digitate con altre semplici risorse in un unico file XML, sotto un solo elemento <resources>.

percorso del file:

res/values/filename.xml
Il nome file è arbitrario. L'elemento name dell'elemento <array> viene utilizzato come dell'ID risorsa.
tipo di dati della risorsa compilato:
Puntatore della risorsa a TypedArray.
riferimento della risorsa:
In Java: R.array.array_name
In XML: @[package:]array/array_name
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array
        name="integer_array_name">
        <item>resource</item>
    </array>
</resources>
elementi:
<resources>
Obbligatorio. che è il nodo radice.

Nessun attributo.

<array>
Definisce un array. Contiene uno o più elementi secondari <item>.

Attributi:

android:name
Stringa. Un nome per l'array. Questo nome viene utilizzato come risorsa per fare riferimento all'array.
<item>
Una risorsa generica. Il valore può essere un riferimento a una risorsa o un tipo di dati semplice. Deve essere un elemento secondario di un elemento <array>.

Nessun attributo.

esempio:
File XML salvato alle ore 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 dell'applicazione recupera ogni array, 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);