Le risorse dell'app, come le icone dell'app, le stringhe localizzate e le bitmap, sono organizzate in directory specifiche per tipo all'interno della directory res/ di ogni modulo. Puoi anche aggiungere versioni alternative di ogni file ottimizzate per diverse configurazioni del dispositivo, ad esempio una versione ad alta risoluzione di una bitmap per schermi ad alta densità.
Android Studio ti aiuta ad aggiungere nuove risorse e risorse alternative in diversi modi, a seconda del tipo di risorsa che vuoi aggiungere. Questa pagina descrive come aggiungere file di risorse di base, come modificare la posizione delle risorse e come funziona l'unione delle risorse.
In Jetpack Compose, definisci la UI in Kotlin anziché nei layout XML.
Tuttavia, utilizzi ancora la directory res/ per archiviare asset statici a livello di app come icone, caratteri e traduzioni. Per scoprire come accedere a queste risorse nelle
funzioni componibili, consulta Risorse in Compose.
Consulta le pagine seguenti per informazioni dettagliate su come creare tipi di risorse specifici:
- Per aggiungere file di stringhe, consulta Localizzare la UI con l'Editor di traduzioni.
- Per aggiungere bitmap, consulta Creare icone dell'app.
- Per aggiungere file SVG, consulta Aggiungere grafica vettoriale a più densità.
Per informazioni su come fare riferimento alle risorse dal codice dell'app, consulta Panoramica delle risorse dell'app.
Aggiungere un file di risorse XML
Sebbene i link alla pagina precedente descrivano flussi di lavoro personalizzati per ogni tipo di risorsa, puoi aggiungere qualsiasi file di risorse XML seguendo questi passaggi:
- Fai clic sul modulo dell'app di destinazione nella finestra Progetto nella visualizzazione Android o Progetto.
- Seleziona File > Nuovo > File di risorse Android.
Figura 1. Finestra di dialogo Nuovo file di risorse.
- Compila i dettagli nella finestra di dialogo:
- Nome file: inserisci il nome del file XML (non è necessario il
.xmlsuffisso). - Tipo di risorsa: seleziona il tipo di risorsa che vuoi creare.
- Elemento principale: se applicabile, seleziona l'elemento XML principale per il file. Alcuni tipi di risorse supportano un solo tipo di elemento principale. A seconda del tipo di risorsa selezionato, questo potrebbe non essere modificabile.
- Set di risorse: seleziona il set di risorse in cui vuoi salvare il file.
- Nome directory: la directory deve essere denominata in modo specifico per il tipo di risorsa e i qualificatori di configurazione. Non modificare questo valore a meno che tu non voglia aggiungere manualmente i qualificatori di configurazione al nome della directory (utilizza invece Qualificatori disponibili).
- Qualificatori disponibili: anziché includere manualmente i qualificatori di configurazione nel nome della directory, puoi aggiungerli selezionando un qualificatore dall'elenco e facendo clic su Aggiungi
.
- Nome file: inserisci il nome del file XML (non è necessario il
- Dopo aver aggiunto tutti i qualificatori che vuoi, fai clic su OK.
Risorse XML complesse in linea
Alcune risorse complesse richiedono più file di risorse XML. Ad esempio, sebbene Compose disponga di API di animazione robuste, potresti dover utilizzare un drawable vettoriale animato, che ha un oggetto drawable vettoriale e un oggetto di animazione e richiede almeno tre file XML.
In questo esempio, puoi creare e conservare i tre file XML separati se devi riutilizzarne uno o più. Tuttavia, se i file XML vengono utilizzati solo per questo drawable vettoriale animato, puoi utilizzare il formato di risorsa in linea fornito in Android Asset Packaging Tool (AAPT). Con AAPT, puoi definire tutte e tre le risorse in un unico file XML. Per saperne di più, consulta Risorse XML complesse in linea.
Aggiungere una directory delle risorse
Per aggiungere una nuova directory delle risorse, segui questi passaggi:
- Fai clic sul modulo dell'app di destinazione nella finestra Progetto.
- Seleziona File > Nuovo > Directory di risorse Android.
Figura 2. Finestra di dialogo Nuova directory di risorse.
- Compila i dettagli nella finestra di dialogo:
- Nome directory: la directory deve essere denominata in modo specifico per il tipo di risorsa e la combinazione di qualificatori di configurazione. Non modificare questo valore a meno che tu non voglia aggiungere manualmente i qualificatori di configurazione al nome della directory (utilizza invece Qualificatori disponibili).
- Tipo di risorsa:seleziona il tipo di risorsa che vuoi che contenga la directory.
- Set di risorse:seleziona il set di risorse in cui vuoi inserire la directory.
- Qualificatori disponibili:anziché includere manualmente i qualificatori di configurazione
nel nome della directory, puoi aggiungerli selezionando un
qualificatore dall'elenco e facendo clic su Aggiungi
.
- Dopo aver aggiunto tutti i qualificatori che vuoi, fai clic su OK.
Modificare la directory delle risorse
Per impostazione predefinita, le risorse si trovano in
module-name/src/source-set-name/res/.
Ad esempio, le risorse per il set di risorse principale del modulo si trovano in src/main/res/, mentre le risorse per il set di risorse di debug si trovano in src/debug/res/.
Tuttavia, puoi modificare questi percorsi in qualsiasi altra posizione (relativa al file build.gradle) con la proprietà res.srcDirs nel blocco sourceSets. Ad esempio:
Alla moda
android { sourceSets { main { res.srcDirs = ['resources/main'] } debug { res.srcDirs = ['resources/debug'] } } }
Kotlin
android { sourceSets { getByName("main") { res.srcDirs("resources/main") } getByName("debug") { res.srcDirs("resources/debug") } } }
Puoi anche specificare più directory delle risorse per un set di risorse, quindi gli strumenti di build le uniscono. Ad esempio:
Alla moda
android { sourceSets { main { res.srcDirs = ['res1', 'res2'] } } }
Kotlin
android { sourceSets { main { res.srcDirs("res1", "res2") } } }
Per saperne di più, consulta Set di origine.
Unione delle risorse
Le risorse nel file dell'app finale possono provenire da tre origini:
- Il set di risorse principale (in genere si trova in
src/main/res/) - Set di risorse delle varianti di compilazione
- Librerie Android (AAR)
Quando tutte le risorse di ogni set di risorse o libreria sono univoche, vengono tutte aggiunte all'app finale. Una risorsa è considerata univoca se il suo nome file è univoco sia nella directory del tipo di risorsa sia nel qualificatore delle risorse (se definito).
Se sono presenti due o più versioni corrispondenti della stessa risorsa, nell'app finale viene inclusa solo una versione. Gli strumenti di build selezionano la versione da conservare in base al seguente ordine di priorità (la priorità più alta a sinistra):
build variant > build type > product flavor > main source set > library dependencies
Ad esempio, se il set di risorse principale contiene:
res/values/strings.xmlres/values-es/strings.xml
E il tipo di compilazione di debug contiene:
res/values/strings.xml
L'app finale include res/values/strings.xml dal tipo di compilazione di debug e res/values-es/strings.xml dal set di risorse principale.
Tuttavia, se la configurazione di compilazione specifica più cartelle di risorse per un determinato set di risorse e sono presenti conflitti tra queste origini, si verifica un errore e l'unione non riesce perché ogni directory delle risorse ha la stessa priorità.