Aggiungi risorse dell'app

Le risorse dell'app, come bitmap e layout, sono organizzate in directory specifiche per il tipo all'interno della directory res/ di ogni modulo. Puoi anche aggiungere versioni alternative di ogni file ottimizzate per le diverse configurazioni dei dispositivi, ad esempio una versione ad alta risoluzione di una bitmap per schermate ad alta densità.

Android Studio consente di 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 località delle risorse e come funziona l'unione delle risorse.

Vedi le pagine seguenti per i dettagli su come creare tipi di risorse specifici:

Per informazioni su come fare riferimento alle risorse dal codice dell'app, consulta la panoramica delle risorse per le app.

Aggiungi un file di risorse XML

Anche se i link alle pagine precedenti descrivono i flussi di lavoro personalizzati per ogni tipo di risorsa, puoi aggiungere qualsiasi file di risorse XML procedendo nel seguente modo:

  1. Fai clic sul modulo dell'app di destinazione nella finestra Project nella vista Android o Project.

  2. Seleziona File > Nuovo > File di risorse Android.

    Figura 1. Finestra di dialogo New Resource File (Nuovo file di risorsa).

  3. Inserisci i dettagli nella finestra di dialogo:
    • Nome file: inserisci il nome del file XML (non è necessario il suffisso .xml).
    • Tipo di risorsa: seleziona il tipo di risorsa che vuoi creare.
    • Elemento radice: 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, questa opzione potrebbe non essere modificabile.
    • Set di origine: seleziona il set di origine 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 modificarlo 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 .
  4. Dopo aver aggiunto tutti i qualificatori desiderati, fai clic su OK.

Suggerimento: per aprire una versione semplificata della finestra di dialogo Nuovo file di risorsa specifica per il tipo di risorsa che vuoi aggiungere, fai clic con il tasto destro del mouse su una directory di risorse esistente all'interno della cartella res e seleziona Nuovo > type-name file di risorse.

Risorse XML complesse incorporate

Alcune risorse complesse richiedono più file di risorse XML. Ad esempio, una risorsa di disegno vettoriale animato ha un oggetto disegnabile 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 disegno vettoriale animato, puoi usare il formato delle risorse incorporate fornito nell'Android Asset Packaging Tool (AAPT). Con AAPT, puoi definire tutte e tre le risorse in un file XML. Per ulteriori informazioni, consulta Risorse XML complesse incorporate.

Aggiungi una directory delle risorse

Per aggiungere una nuova directory di risorse:

  1. Fai clic sul modulo dell'app di destinazione nella finestra Progetto.

  2. Seleziona File > Nuovo > Directory delle risorse Android.

    Figura 2. Finestra di dialogo Nuova directory delle risorse.

  3. Inserisci i dettagli nella finestra di dialogo:
    • Nome directory: la directory deve essere denominata in modo specifico per il tipo di risorsa e la combinazione dei qualificatori di configurazione. Non modificarlo, 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 deve contenere la directory.
    • Set di origine:seleziona il set di origine 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 .
  4. Dopo aver aggiunto tutti i qualificatori desiderati, fai clic su OK.

Cambia 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 origine principale del modulo sono in src/main/res/ e le risorse per il set di origini di debug sono 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. Ecco alcuni esempi:

Trendy

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 origine, quindi gli strumenti di creazione le uniscono. Ecco alcuni esempi:

Trendy


android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

Kotlin

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

Per maggiori informazioni, consulta la pagina relativa ai set di origine.

Unione delle risorse

Le risorse nel file finale dell'app possono provenire da tre origini:

  • L'insieme di origini principale (situato in genere in src/main/res/)
  • Insiemi di origini delle varianti Crea
  • Librerie Android (AAR)

Quando tutte le risorse di ogni set di origine o libreria sono univoche, vengono tutte aggiunte all'app finale. Una risorsa è considerata univoca se il suo nome file è univoco sia all'interno della directory tipo di risorsa che nel qualificatore delle risorse (se definito).

Se esistono due o più versioni corrispondenti della stessa risorsa, nell'app finale viene inclusa una sola versione. Gli strumenti di creazione selezionano la versione da conservare in base al seguente ordine di priorità (priorità massima a sinistra):

variante di build > tipo di build > versione di prodotto > set di origini principale > dipendenze libreria

Ad esempio, se l'insieme di origini principale contiene:

  • res/layout/example.xml
  • res/layout-land/example.xml

Il tipo di build di debug contiene:

  • res/layout/example.xml

Poi l'app finale include res/layout/example.xml del tipo di build di debug e res/layout-land/example.xml del set di origine principale.

Tuttavia, se la configurazione della build specifica più cartelle di risorse per un determinato set di origine e si verificano conflitti tra queste origini, si verifica un errore e l'unione non riesce perché ogni directory delle risorse ha la stessa priorità.