2010-02-08 7 views
18

J'ai une application simple, il commence, charge xml feed à partir du net, vous pouvez parcourir une liste de nouvelles et ensuite lire les détails pour un élément de nouvelles choisi. Ce que je voudrais faire est d'avoir un écran de démarrage, ce qui signifie que dès que vous cliquez sur l'application, il devrait afficher une image (nom de l'application dans mon cas) et ensuite afficher la liste des nouvelles seulement après qu'ils ont chargé. J'ai lu des problèmes similaires (je pense), et généralement les gens disent d'utiliser FrameLayout, mais je ne peux pas vraiment le résoudre. Je ne suis pas sûr si cela peut être fait dans la première activité qui est lancée, peut-être que je devrais juste afficher cette image de démarrage dans une activité et ensuite seulement appeler l'activité affichant ma liste de nouvelles?Comment créer un écran d'accueil (écran visible lorsque l'application démarre)?

Je sais que sur l'iPhone, vous pouvez régler écran de démarrage dans les paramètres d'applications tout en développant, serait bien d'avoir cette fonctionnalité dans le manifeste app android ...

+4

Vous savez qu'un écran de démarrage ne vous aide pas mais fait que votre application commence encore plus lentement ... s'il vous plaît ne les utilisez pas. – Johan

+0

Je crois que ses inconvénients l'emportent largement sur les avantages que vous pourriez retirer d'un écran d'accueil. –

+21

Je ne vois pas d'inconvénients, au lieu de regarder un écran noir pendant 2 ou 3 secondes (ou plus), vous regardez une image, beaucoup plus agréable à mon avis, au moins, vous savez que l'application a commencé. – pambuk

Répondre

35

Android vous propose de prendre avantage d'utiliser un écran de démarrage lors de l'exécution longs calculs au démarrage. Voici un extrait du site Web du développeur Android - Conception de la réactivité:

"Si votre application nécessite une phase de configuration initiale fastidieuse, envisagez d'afficher un écran de démarrage ou de rendre la vue principale aussi rapidement que possible et de renseigner les informations de manière asynchrone Dans les deux cas, vous devez indiquer que des progrès ont été réalisés, de peur que l'utilisateur ne perde l'idée que l'application est gelée. " - Site de développeur Android

Vous pouvez créer une activité affichant une boîte de dialogue de progression lors de l'utilisation d'une asyncTask pour télécharger le flux xml à partir du réseau, l'analyser, l'enregistrer dans un db (si nécessaire), puis lancer l'activité affiche les fils d'actualités. Fermer l'activité de démarrage en appelant finish()

est ici un code squelette:


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(); 
     } 

    } 
} 

espoir qui aide!

+1

Problème résolu, merci :) – pambuk

+1

Ultimate :) merci – Naruto

+0

Salut, que faire si j'ai plusieurs flux et que vous souhaitez démarrer le deuxième flux de chargement APRÈS la fin du premier flux et s'affiche dans la première activité. Comment puis-je faire des discussions simultanées dans cet exemple? – Zac

1

Je sais que c'est vieux mais pour ceux d'entre vous qui sont toujours confrontés à ce problème, vous pouvez utiliser ce simple android-splash library pour afficher votre écran de démarrage.

SplashBuilder 
     .with(this, savedInstanceState) 
     .show(); 

Vous pouvez définir SplashTask qui exécutera alors que l'écran de démarrage est affiché.