domenica 8 novembre 2015

Impostare uno "branded launch" (screen iniziale col logo dell'app)

Quando la vostra app non è in memoria e viene lanciata, questa "esecuzione a freddo" può richiedere più tempo rispetto all'esecuzione della stessa app quando è già in memoria. Ovviamente, il tempo che impiega dipende da una serie di fattori come la dimensione dell'app e quali sono le operazioni che vengono svolte all'interno del metodo onCreate() (che spero per voi siano più poche possibili). Durante questo tempo, il window manager fa del suo meglio mostrando sul display una UI temporanea - un placeholder - usando elementi presi dal vostro tema come lo sfondo e il colore della status bar.

                 

Possiamo andare a modificare opportunamente questi elementi in modo da rendere più user-friendly questo "tempo morto" di avvio. Un esempio è quello di impostare il logo dell'app come sfondo del nostro tema invece di un colore a tinta unita.

Vediamo come impostare qesto branded launch.

Occorre creare un tema custom che modifichi android:windowBackground per poi impostarlo come tema dell'app prima della chiamata a super.onCreate().

Supponiamo di avere un tema chiamato AppTheme, il launcher dovrebbe essere:

In questo modo facciamo sì che il nostro launcher theme erediti le sue proprietà dal tema principale, modificando soltanto due attributi:
  • il windowBackground, cioè lo sfondo
  • il colorPrimaryDark, ovvero il colore della status bar
Sfortunatamente, la risorsa drawable/launch_screen impostata come sfondo, non può essere solo una semplice immagine, ma deve essere strutturata in questo modo:

A questo punto non ci resta che impostare il nostro branded launch all'interno dell'AndroidManifest.xml usando

android:theme="@style/AppTheme.Launcher"

Il modo migliore per ritornare al tema di default è quello di invocare setTheme(R.style.AppTheme) prima di super.onCreate() e setContentView() all'interno dell'activity.

Ulteriori informazioni: link

Nessun commento:

Posta un commento