La versione 8 di Android (API di livello 26) ha introdotto, tra le altre cose, le Adaptive Icons, un nuovo modo di fornire icone per l'app in grado di adattarsi più facilmente al dispositivo e di supportare diversi effetti visivi in risposta alle azioni dell'utente.
Icone di questo genere vengono conservate, come di consueto, all'interno della cartella di risorse
mipmap, ma ciò che fa la differenza è il modo in cui vengono progettate. Queste le caratteristiche:
- ogni icona è costituita da due livelli, uno in foreground e uno in background;
- la dimensione di entrambi i livelli è di 108dp, sia in altezza sia in larghezza;
- 18dp di ognuno dei quattro lati viene riservato per effetti visivi dell'icona come parallasse e risposta alla pressione.
Come creare icone adattive
Utilizzando Adaptive Icons dovremo anche provvedere alternative per supportare le versioni del sistema precedenti alle API 26, una sorta di modalità "legacy".
L'icona deve essere inserita nel file AndroidManifest.xml, all'interno del nodo <application>
:
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
...
...
>
Si noti che sono stati utilizzati due attributi: icon
per impostare l'icona e roundIcon
, destinata alle versioni di sistema che permettono icone rotonde. Entrambi gli attributi chiamano in causa risorse di tipo mipmap e indirettamente, come vedremo, risorse
drawable.
Si osservi in proposito che le risorse indicate sono in formato XML e PNG ma rappresentano tutte delle immagini. La differenza consiste
nell'approccio in cui vengono coinvolte: le prime (quelle XML) rientrano nell'uso delle Adaptive Icons, utilizzato dalle API 26 a seguire, le seconde (file PNG) rispondono a esigenze di compatibilità con le versioni precedenti. Per avere conferma dell'adattabilità del nuovo approccio, è sufficiente notare che i file PNG esistono in versioni multiple, una per ogni livello di densità mentre i file XML sono etichettati come anydpi-v26, pertanto validi per ogni tipo di display purchè il sistema operativo sia almeno la versione 8 di Android.
Adaptive Icons in dettaglio
Entrando nei dettagli, i file ic_launcher.xml e ic_launcher_round.xml hanno il seguente contenuto:
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
In realtà, essi sono un collegamento a ciò che troviamo tra le risorse drawable, le due immagini progettate in XML che costituiranno lo sfondo (background) e la parte frontale (foreground) dell'icona.
Le risorse da impiegare possono essere prodotte internamente ad Android Studio, che offre due strumenti, accessibili direttamente tramite menu: Image Asset e Vector Asset.
Con Image Asset possiamo creare delle icone per l'app partendo da icone material, stringhe o immagini proprie. Scegliendo una voce nel menu a tendina Icon type si può specificare se si è interessati alla produzione di icone Adaptive, legacy o entrambe. Tutte le immagini saranno realizzate nel numero di copie necessarie per compatilità con le versioni di display in circolazione. La struttura a scheda permette di agire sui vari livelli dell'icona.
Vector Asset è un altro strumento che aiuta a predisporre immagini ed icone partendo da material icon o da file locali in formato SVG o PSD. Grazie a questo tool avremo icone vettoriali pronte ad adattarsi ad ogni circostanza.
Si ricordi infine che con Image Asset e Vector Asset si potranno produrre, oltre alle icone per il launcher, anche altre di vario genere, da destinare a menu e notifiche.