Con le risorse, c'è il supporto integrato per fornire alternative per diverse lingue, versioni del sistema operativo, orientamenti dello schermo, ecc., Come descritto qui . Niente di tutto ciò è disponibile con le risorse. Inoltre, molte parti dell'API supportano l'uso di identificatori di risorse. Infine, i nomi delle risorse vengono trasformati in nomi di campo costanti che vengono controllati in fase di compilazione, quindi c'è meno possibilità di mancate corrispondenze tra il codice e le risorse stesse. Niente di tutto ciò si applica alle risorse.
Allora perché avere una cartella delle risorse? Se desideri calcolare l'asset che desideri utilizzare in fase di esecuzione, è abbastanza semplice. Con le risorse, dovresti dichiarare un elenco di tutti gli ID risorsa che potrebbero essere utilizzati e calcolare un indice nell'elenco. (Questo è un po 'imbarazzante e introduce opportunità di errore se l'insieme di risorse cambia nel ciclo di sviluppo.) (MODIFICA: puoi recuperare un ID risorsa per nome usando getIdentifier
, ma questo perde i vantaggi del controllo in fase di compilazione.) essere organizzato anche in una gerarchia di cartelle, che non è supportata dalle risorse. È un modo diverso di gestire i dati. Sebbene le risorse coprano la maggior parte dei casi, le risorse hanno il loro uso occasionale.
Un'altra differenza: le risorse definite in un progetto di libreria vengono importate automaticamente nei progetti dell'applicazione che dipendono dalla libreria. Per le risorse, ciò non accade; i file di asset devono essere presenti nella directory degli asset dei progetti dell'applicazione. [EDIT: con il nuovo sistema di build basato su Gradle di Android (utilizzato con Android Studio), questo non è più vero. Le directory delle risorse per i progetti di libreria sono impacchettate nei file .aar, quindi le risorse definite nei progetti di libreria vengono unite nei progetti dell'applicazione (quindi non devono essere presenti nella /assets
directory dell'applicazione se si trovano in una libreria di riferimento).]
EDIT: ancora un'altra differenza sorge se vuoi creare un pacchetto di un font personalizzato con la tua app. Sono disponibili chiamate API per creare un Typeface
file da un file di font archiviato nel file system o nella assets/
directory dell'app . Ma non esiste un'API per creare un Typeface
file da un file di carattere memorizzato nella res/
directory (o da un InputStream
, che consentirebbe l'uso della res/
directory). [ NOTA: con Android O (ora disponibile in anteprima alpha) sarai in grado di includere caratteri personalizzati come risorse. Vedi la descrizione qui di questa caratteristica attesa da tempo. Tuttavia, fintanto che il tuo livello API minimo è 25 o inferiore, dovrai attenersi alla creazione di pacchetti di caratteri personalizzati come risorse anziché come risorse.]
res
sta per risorse, allora cosaassets
significa ??