2015-10-20 19 views
5

Come molti altri sviluppatori Android, non sono un grande fan degli splash screen, ma la maggior parte dei clienti li desidera perché l'iPhone li ha o qualche altra "grande" ragione.Android, come creare una schermata iniziale o una schermata di avvio senza lo schermo bianco?

Nelle linee guida androide si dice:

Naturalmente, si vuole a tutti di imparare rapidamente le corde, scoprire le caratteristiche fredde, e ottenere il massimo dalla vostra applicazione. Quindi potresti essere tentato di presentare una presentazione introduttiva, un video o una schermata iniziale per tutti i nuovi utenti quando aprono per la prima volta l'app. Oppure potresti essere attratto dall'idea di visualizzare bolle di testo o finestre di dialogo utili quando gli utenti interagiscono con determinate funzioni per la prima volta.

link here, primo paragrafo "Non mostrare aiuto non richiesto, salvo in casi molto limitati"

E ora nelle linee guida di progettazione dei materiali che consigliamo agli sviluppatori di utilizzare un "Launch Screen"

Poiché l'avvio dell'app durante la visualizzazione di una tela bianca aumenta il tempo di caricamento percepito, è consigliabile utilizzare l'interfaccia utente segnaposto o una schermata di avvio con marchio.

Suppongo che il sito Web di Android non sia stato ancora aggiornato. Ad ogni modo, l'ultima versione di Hangouts (5.0.104 ...) ha una schermata di avvio molto bella e veloce. Viene visualizzato immediatamente sul mio Nexus 5 con Marshmallow. Quindi la mia domanda, c'è un modo "ufficiale" per farlo?

Sono stato alla ricerca di esempi ma non riesco a trovare nulla, tranne per il tipo di soluzioni alternative come questo esempio here che utilizza quello che penso sia l'approccio più comune con un'attività di schermata di Splash. Questo, tuttavia, mostra una schermata bianca quando l'app è stata distrutta prima che venga visualizzata la schermata iniziale effettiva.

Questo second example utilizza un tema con uno sfondo della finestra che viene visualizzato all'istante ma scompare quasi altrettanto rapidamente.

Quindi, come fa Google a rendere la schermata di avvio come in Google Hangouts che viene visualizzata senza indugio e senza schermo bianco prima?

risposta

12

Un collega dal mio lavoro sono stati in un corso di formazione di progettazione materiale al quartier generale di Google a Londra e il loro modo ufficiale di farlo sta usando il windowBackground nel tema come hai postato sul proprio domanda: http://antonioleiva.com/branded-launch-screen/

L'idea è che il tema XML venga mostrato molto velocemente dal framework, e non appena il tuo attuale layout sarà caricato sarà visibile.

La differenza tra Hangouts o anche Google Maps è che il loro layout è un layout molto pesante/complesso e richiede semplicemente più tempo per essere caricato rispetto a un'app HelloWorld.

Man mano che la tua app cresce e diventa più complessa e con più elementi inizializzati durante Application.onCreate o Activity.onCreate, la tua barra verrà visualizzata anche per un tempo più lungo.

edit:

ho trovato un post su Google+ dal profilo ufficiale "Sviluppatori Android" e ripubblicare da ingegnere di Google Ian Lago di dire la stessa cosa:

https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd https://plus.google.com/+IanLake/posts/SW7F2CJvAmU

+1

ps .: controlla la mia modifica. Ho trovato alcuni post G + su di esso. – Budius

0

È perché la prima soluzione (http://antonioleiva.com/branded-launch-screen/) sta cambiando il tema in onCreate. Ma i widget della tua attività non sono ancora visualizzati in onCreate. Ecco perché vedi lo schermo bianco. Il secondo esempio è buono. Se hai bisogno di più tempo, imposta SPLASH_TIME più a lungo. Controllare la riga Thread.sleep (SPLASH_TIME) nella funzione doInBackground. Puoi aspettare di più.

Problemi correlati