Passa ai contenuti principali

Android Studio - ConfigChanges

In questo articolo vedremo cos'è l'attributo ConfigChanges che si può impostare all'interno del file AndroidManifest.xml.

Maggiori informazioni si possono trovare a questo indirizzo (in inglese)

Alcune configurazioni del dispositivo possono cambiare durante l'uso dell'app (come l'orientamento dello schermo, la disponibilità della tastiera e quando l'utente attiva la modalità multi-finestra).
Quando si verifica una tale modifica, Android riavvia l'Activity in esecuzione (viene chiamato onDestroy(), seguito da onCreate()). Come si può vedere in questo articolo.
Il comportamento di riavvio è progettato per consentire all'applicazione di adattarsi alle nuove configurazioni ricaricando automaticamente l'applicazione con risorse alternative che corrispondono alla nuova configurazione del dispositivo.
Per gestire correttamente un riavvio, è importante che l'attività ripristini il suo stato precedente. È possibile utilizzare la funzione onSaveInstanceState(), ViewModel e salvataggio dati per salvare e ripristinare lo stato dell'interfaccia utente in seguito alle modifiche alla configurazione.
Per verificare che l'applicazione si riavvii con lo stato dell'applicazione intatto, è necessario richiamare le modifiche alla configurazione (come la modifica dell'orientamento dello schermo) durante l'esecuzione di varie attività nell'applicazione. L'applicazione dovrebbe essere in grado di riavviarsi in qualsiasi momento senza perdita di dati o stato dell'utente al fine di gestire eventi quali modifiche alla configurazione o quando l'utente riceve una telefonata in arrivo e quindi ritorna all'applicazione molto più tardi dopo che il processo dell'applicazione potrebbe essere stato distrutto.

Per maggiori informazioni su onSaveInstanceState() consultare questo articolo.

L'utilizzo dell'attributo ConfigChanges deve essere fatto all'interno del file AndroidManifest.xml contenuto all'interno della cartella manifest del progetto.
Per configurare questo attributo in modo che non venga ricaricata l'Activity quando si cambia orientamento dello schermo è sufficiente inserire questa riga di codice all'interno del tag activity Ecco il file AndroidManifest.xml l'attributo è stato inserito alla riga 13
In questo modo quando si orienta lo schermo da portrait (verticale) a landscape (orizzontale) o viceversa, l'Activity non verrà ricaricata e quindi non si perderanno i dati inseriti e/o calcoli effettuati.
Avvio dell'app
Pulsante Calcola premuto
Orientamento dello schermo cambiato da portrait a landscape o viceversa
Questa soluzione può essere utile nel caso in qui la nostra app abbia un solo layout per ogni tipo di dispositivo e/o orientamento schermo altrimenti bisogna utilizzare onSaveInstanceState() come descritto in questo articolo

Per altri tipi di ConfigChanges consultare questa guida (in Inglese).

Ora, quando una di queste configurazioni cambia, l'Activity non si riavvia. Al contrario, l'Activity esegue una chiamata alla funzione onConfigurationChanged().
A questa funzione viene passato un oggetto Configuration che specifica la nuova configurazione del dispositivo. Leggendo i campi nella Configurazione, è possibile determinare la nuova configurazione e apportare le modifiche appropriate aggiornando le risorse utilizzate nella propria interfaccia. Nel momento in cui viene chiamato questo metodo, l'oggetto Risorse dell'attività viene aggiornato per restituire risorse in base alla nuova configurazione, in modo da poter ripristinare facilmente elementi dell'interfaccia utente senza riavviare l'attività.

Ad esempio, la seguente implementazione di onConfigurationChanged() verifica l'orientamento attuale del dispositivo: Ecco come si presenta il file MainActivity.kt


Download Project
Download file APK


Commenti

Post popolari in questo blog

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.

Android Studio - Impostare uno sfondo sfumato

In Android Studio è possibile creare uno sfondo sfumato senza dover creare una immagine apposta per questo scopo. Per fare questo occorre seguire questi semplici passaggi: Aprire la cartella res Cliccare con il tasto destro sulla cartella drawable Selezionare New Selezionare Drawable resource file Dare un nome al file ad esempio gradient_background Cliccare sul pulsante OK per confermare Una volta aperto il file gradient_background.xml inserire le seguenti righe di codice: Alla riga 6 inserire l'angolo che definisce la direzione della sfumatura (valori da 0 a 360) Alla riga 7 inserire il colore di partenza in formato esadecimale Alla riga 8 inserire il colore finale in formato esadecimale Per quanto riguarda i colori è possibile utilizzare il sito webgradients.com in modo da poter utilizzare le sfumature proposte o creare le proprie sfumature personalizzate. Una volta creato il file che definisce lo sfondo passare al layout ed impostare l'attibuto backgr