Estendere l'ActionBar sotto la StatusBar senza ritardi? Possibile con una libreria!

Roberto Orgiu
Roberto Orgiu
Estendere l'ActionBar sotto la StatusBar senza ritardi? Possibile con una libreria!

Abbiamo già parlato diverse volte dell'effetto di traslucenza che Google ha donato ad Android 4.4 sul Nexus 5, ma non abbiamo esplorato nel dettaglio cosa succeda in un'applicazione quando si cerca di implementare il nuovo tema inserito nelle API di Google: utilizzando questo stile, l'Activity espande il proprio colore di background fino ai bordi superiore ed inferiore dello schermo, riempiendo di fatto anche StatusBar e NavBar.

Ma cosa succede se lo sviluppatore vuole utilizzare un'ActionBar con un colore di sfondo diverso rispetto a quello dell'Activity stessa? Per com'è strutturato Android, ci troveremmo di fronte ad una situazione simile allo screenshot più a sinistra nell'immagine in apertura, con la barra in alto che spezza il layout dell'app. Ci sono diverse soluzioni per ovviare a questo problema, ma la maggior parte prevedono che la parte superiore del layout venga sovrascritta dopo il caricamento dell'Activity, introducendo un fastidioso ritardo che gli utenti difficilmente potrebbero non notare.

LEGGI ANCHE: Le Storage API e le funzioni di stampa di Android 4.4

Il rimedio che arriva da XDA è però leggermente diverso ed evita questa latenza aggiuntiva andando a creare un layout composito che simulerà l'estensione dell'ActionBar prima che essa venga disegnata: questo, purtroppo, va a creare un leggero overdraw che Eugenio Marletti (in arte Takhion), sviluppatore di questa soluzione, spiega come ridurre sul repository della libreria.

Nello specifico, i passi da seguire per implementare questa soluzione sono i seguenti:

  • per prima cosa, si inseriscono nel file values.xml i codici dei colori di background dell'Activity e della Statusbar
  • successivamente, si crea un drawable di tipo layer-list contenente i due item con i colori di background, il secondo dei quali spaziato di 25 dp dal bordo superiore del layout
  • si crea quindi uno stile in cui si impostano i valori di windowBackgroundwindowTranslucentNavigationwindowTranslucentStatus
  • come ultimo passo, si applica il tema appena creato all'Activity desiderata.

Se volete utilizzare questa libreria nelle vostre applicazioni, troverete tutti i dettagli sul repository GitHub del progetto mentre, se volete seguirne lo sviluppo, vi basta fare un salto sul thread ufficiale di XDA.