Compatibilità con Material Design
Alcune caratteristiche del tema Material Design, come il Material Theme e transizioni sull'Activity, sono disponibili solo su Android 5.0 (livello di API 21) e superiore. Tuttavia, è possibile progettare le applicazioni in modo da poter sfruttare queste funzioni sui dispositivi che supportano Android API 21 e mantenere la compatibilità con le versioni precedenti di Android.
Per usare il Material Theme bisogna creare uno stile per l'applicazione nel seguente modo:
res/values/styles.xml
res/values-v21/styles.xml
settare il tema nel manifest
In values andrà lo stile compatibile per le precedenti versioni di Android, mentre in values-v21 andrà lo stile per la compatibilità con il Material Theme.
Il file styles.xml sarà formattato nel seguente modo
<resources> <!-- inherit from the material theme --> <style name="AppBaseTheme" parent="android:Theme.Material.Light"> <!-- Main theme colors --> <!-- your app branding color for the app bar --> <item name="android:colorPrimary">@color/material_blue_500</item> <!-- darker variant for the status bar and contextual app bars --> <item name="android:colorPrimaryDark">@color/material_blue_700</item> <!-- theme UI controls like checkboxes and text fields --> <item name="android:colorAccent">@color/material_blue_A200</item> </style> </resources>
dove @color/material_blue_ xxx sono delle stringhe relative ai colori da noi scelti. (vedi)
E' importante notare che con il tema Theme.Material.Light il textColorPrimary avrà il colore di default settato sul nero. Apportando le seguenti modifiche si può gestire anche il resto del tema
<item name="android:textColorPrimary">@color/text_primary</item> <item name="android:textColor">@color/text_secondary</item> <item name="android:navigationBarColor">#D32F2F</item> </style> <color name="text_primary">#FFFFFFFF</color> <color name="text_secondary">#FF000000</color> </resources>
Se i layout che si progettano non utilizzano nessuna features basata sul Material Design, allora questi funzioneranno sia su versioni Android 5.0 che precedenti. In caso contrario, è possibile fornire dei layout alternativi per personalizzare la vostra applicazione.
Per creare i nuovi layout basta creare delle cartelle res/layout-v21, res/layout-large-v21 e così per ogni tipo di layout che si intende gestire.
In fine per mantenere la compatibilità con le versioni precedenti di Android, controllare la versione del sistema in fase di esecuzione, prima di richiamare le API per una di queste caratteristiche:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //material design APIs } else { //implementazione senza material design }
Questa è un'applicazione sviluppata con compatibilità al Material Theme