Sappiamo tutti che ci sono un sacco di tutorial su come fare una schermata iniziale su Android. Ma sappiamo anche che sono pseudo-splashscreens. Ho cercato per molti e ho sempre visto Thread.sleep(x)
. Questo non è ben codificato, questo è solo per rendere la bellezza dell'app e sembrare un'app professionale, non è quello che voglio!
Un altro problema con quegli splash screen è che non risolvono il mio problema perché lo mostrano solo dopo l' l'attività inizia e mostra la visualizzazione del contenuto.Come fare uno splash screen ben codificato
Ho un'app che fa un sacco di cose durante l'inizializzazione e quando l'app si avvia l'utente vede uno schermo nero per alcuni secondi, abbastanza tempo per infastidire. Ecco perché voglio mostrare uno splash screen ben codificato che rimuove quella schermata nera che appare prima che la visualizzazione del contenuto sia stata impostata.
Ho provato qualcosa. Ho incluso lo splash screen (uno RelativeLayout
) nel layout impostato nello MainActivity
, ma per quanto ne so Android mostra solo il contenuto dopo che tutto è stato caricato, quindi se sto cercando di mostrare qualche vista dalla vista del contenuto Devo aspettare che tutto abbia finito. Eppure, io mando il mio codice, può aiutare in qualche modo ...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new SplashTask().execute();
}
private class SplashTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
initializeViews();
mSplashScreen.setVisibility(View.VISIBLE);
}
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void params) {
Standard.Initiate(MainActivity.this);
verifyListStats();
loadListAdapters();
setOnClickListeners();
mSplashScreen.setVisibility(View.GONE);
}
}
ho provato a caricare alcune risorse in doInBackground(...)
ma perché lo faccio alcune operazioni in onResume()
che hanno bisogno di tali risorse non posso farlo (o almeno penso di non poterlo fare).
Qualche idea? Ho sentito parlare di un meccanismo integrato simile alle immagini di lancio di iOS, forse questo può essere un modo.
[Do not] (http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/) – Jonas
Sì @ Jonas mi è piaciuto quell'articolo quando l'ho letto un po 'di tempo fa. È molto meglio mostrare la tua GUI pre-popolata mentre stai aspettando piuttosto che bloccare un utente con una schermata iniziale. –
Se la tua app usa internet puoi verificare la connessione anche sullo schermo di Splas. Questo è utile – NightSkyCode