In questo secondo articolo vogliamo mostrarvi, con un esempio pratico, come sia possibile modificare le risorse di un un applicativo Android a runtime, nell’area download è possibile scaricare il progetto d’esempio, qui il link all’articolo precedente.
Cambiamento delle risorse a Runtime
La classe Activity di Android, ha la capacità di ricevere notifiche sul cambiamento di configurazione da parte del dispositivo; l’evento viene gestito tramite il metodo onConfigurationChanged(Configuration config). nel progetto d’esempio viene gestito l’evento del cambio della configurazione sull’orientamento del video: per abilitare un Activity alla ricezione dell’evento oltre a sovrascrivere il metodo della classe padre Activity è necessario dichiarare che suddetta Activity è abilitata a ricevere questo evento; aggiungiamo quindi nel file di configurazione dell’applicazione(AndroidManifest.xml) una ulteriore direttiva: android:configChanges=”orientation|keyboardHidden”
<activity android:name=”.ResChangeExample”
android:label=”@string/titoloApplicazione”
android:configChanges=”orientation|keyboardHidden”>
Lo scopo dell’esempio è quello di mostrare due immagini differenti in base all’orientamento del video del dispositivo, come si puo’ notare nel file di risorse, oltre all’icona abbiamo aggiunto altre due immagini amit.jpg e amobl.jpg 
Per default carichiamo una delle due immagini definendole nel file di layout, come si può notare l’immagine viene referenziata tramite il riferimento “@drawable/amit”, “@drawable” indica che la risorsa si trova nel folder “res/drawable/” seguita poi dal nome del file immagine senza estensione.
Vediamo nel video il funzionamento dell’applicazione: tramitela combinazione dei tasti CTRL+F11 forziamo l’emulatore a cambiare l’orientamento del display. Da notare il cambiamento d’immagine al variare dell’orientamento.
Il codice in dettaglio:
In questo articolo abbiamo visto un esempio abbastanza banale ma che rende bene l’idea di come si possano gestire i vari cambi di configurazione consentiti dal dispositivo(Language, Screen Orintation, Keyboard input type, ecc). Da notare che al momento con l’attuale versione di Android non è possibile agire sul cambio di Locale fissato al lang “en”.

