Android supporta l’esternalizzazione delle risorse, una pratica che evita di cablare le risorse a livello di codice. Le risorse esternalizzate in Android possono essere di vario tipo: stringhe, colori, immagini, animazioni, temi e layout.
Esternalizzare una risorsa significa aumentare la manutenibilità l’aggiornamento e la gestione in generale di una applicazione, un esempio su tutti è il concetto d’internazionalizzazione che utilizza un file diverso per ogni lingua.
Come funziona l’esternalizzazione di Android?
Le risorse applicative sono memorizzate sotto la cartella /res del progetto, ogni risorsa è contenuta all’interno di una sotto cartella specifica in base alla sua tipologia. Quando creiamo un nuovo progetto(da Eclipse) automaticamente ADT(Android Developer Tool) creerà il folder /res e tre “subfolder” principali, che sono: values, drawable e layout.
drawable contiene i files immagini, possono essere usati oltre i file png anche formati jpeg e gif anche se il prmo formato è da preferire
layout contiene i file di layout, questi file hanno lo scopo di disaccoppiare il layer di presentazione da quello di business, tramite questi file xml è possibile infatti disegnare la user interface per ogni singola “activity”. Avere un disaccoppiamento della view dal codice offre una serie di benefici, un esempio su tutti è la possibilità di definire viste diverse in base a l’hardware e/o alla dimensioni dello schermo o al suo orientamento(verticale/orizzontale).
values in questa cartella vengono definite tutte le risorse come stringhe, colori e dimensioni.Nel file xml è possibile definire il tipo di valore memorizzato: “<string”,”<dimen”,”<color” e “<array”
Come utilizzare le risorse
Le risorse possono essere utilizzate direttamente nel codice, oppure referenziate in altre risorse, la classe R contiene un riferimento statico per ogni tipo di risorsa( R.string , R.drawable), ogni volta che viene aggiunta o modificata una risorsa, ADT si occupa di aggiornare la classe R aggiungendo i riferimenti alle risorse definite nelle directorie contenute in /res.
Nel prossimo articolo andremo in dettaglio sull’argomento e realizzeremo un applicativo d’esempio con il quale poter variare dinamicamente il layout.