Come fare una splash screen (schermo visibile quando si avvia app)?
-
19-09-2019 - |
Domanda
Ho una semplice applicazione, inizia, mangimi carichi xml dalla rete, è possibile sfogliare un elenco di notizie e poi leggere i dettagli per una notizia prescelto. Quello che vorrei fare è di avere una schermata iniziale, cioè non appena si fa clic su applicazione, che dovrebbe visualizzare un'immagine (nome dell'applicazione nel mio caso) e quindi visualizzare l'elenco notizia solo dopo che sono caricati.
Ho letto su problemi simili (credo), e di solito la gente dice di usare FrameLayout, ma non posso davvero risolverlo. Non sono sicuro se questo può essere fatto nella prima azione che viene lanciato, forse dovrei semplicemente visualizzare questa immagine Spruzzata in un'attività e solo allora chiamare attività che visualizza la mia lista notizia?
So che su iPhone è possibile impostare lo splash screen in impostazioni app durante lo sviluppo, sarebbe bello avere questa funzionalità in palese di app di Android ...
Soluzione
Android suggerisce di prendere vantaggio di utilizzare uno splash screen durante l'esecuzione di lunghi calcoli sulle start up. Ecco un estratto da parte dello sviluppatore Android Sito web - Progettare per risposte:
"Se l'applicazione ha una fase di configurazione iniziale in termini di tempo, si consideri che mostra una schermata iniziale o rendere la vista principale il più rapidamente possibile e compilando le informazioni in modo asincrono. In entrambi i casi, si dovrebbe indicare in qualche modo è stato fatto che il progresso , per timore che l'utente percepisce che l'applicazione è congelato ". - Android Developer Site
È possibile creare un'attività che mostra una finestra di avanzamento durante l'utilizzo di un AsyncTask per scaricare il feed xml dalla rete, analizzarlo, conservarlo per un db (se necessario) e quindi avviare l'attività che visualizza il news feed. Chiudere il tonfo attività chiamando finitura ()
Ecco un codice di scheletro:
public class SplashScreen extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// set the content view for your splash screen you defined in an xml file
setContentView(R.layout.splashscreen);
// perform other stuff you need to do
// execute your xml news feed loader
new AsyncLoadXMLFeed().execute();
}
private class AsyncLoadXMLFeed extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute(){
// show your progress dialog
}
@Override
protected Void doInBackground(Void... voids){
// load your xml feed asynchronously
}
@Override
protected void onPostExecute(Void params){
// dismiss your dialog
// launch your News activity
Intent intent = new Intent(SplashScreen.this, News.class);
startActivity(intent);
// close this activity
finish();
}
}
}
speranza che aiuta!
Altri suggerimenti
So che questo è vecchio, ma per quelli di voi che stanno ancora affrontando questo problema, è possibile utilizzare questo semplice href="https://github.com/HadadTomer/AndroidSplash" biblioteca -splash per mostrare il vostro splash screen.
SplashBuilder
.with(this, savedInstanceState)
.show();
È possibile impostare SplashTask
che eseguirà mentre è visualizzata la schermata iniziale.