2010-02-08 4 views
18

Ich habe eine einfache Anwendung, es startet, lädt XML-Feed aus dem Netz, können Sie eine Liste von Nachrichten durchsuchen und lesen Sie dann Details für eine ausgewählte Nachricht. Was ich tun möchte, ist ein Begrüßungsbildschirm, was bedeutet, sobald Sie auf die Anwendung klicken, sollte ein Bild (in meinem Fall App-Name) angezeigt werden und dann die News-Liste erst anzeigen, nachdem sie geladen wurde.Wie erstelle ich einen Begrüßungsbildschirm (der Bildschirm ist sichtbar, wenn die App startet)?

las ich über ähnliche (glaube ich) Probleme, und in der Regel Menschen FrameLayout verwenden sagen, aber ich kann es nicht wirklich aussortieren. Ich bin nicht sicher, ob dies in der ersten Aktivität, die gestartet wird, getan werden kann, vielleicht sollte ich nur dieses Splash-Bild in einer Aktivität anzeigen und dann nur Aktivität aufrufen, die meine News-Liste anzeigt?

Ich weiß, dass auf dem iPhone Sie Splash-Screen in App-Einstellungen festlegen können während der Entwicklung, wäre schön, diese Funktionalität in Manifests der App Android haben ...

+4

Sie wissen, dass ein Begrüßungsbildschirm nichts hilft, aber Ihre App noch langsamer startet ... bitte verwenden Sie sie nicht. – Johan

+0

Ich glaube, seine Nachteile überwiegen alle Vorteile, die Sie von einem Splash-Bildschirm erhalten würden. –

+21

Ich sehe keine Nachteile, anstatt auf einen schwarzen Bildschirm für 2 oder 3 Sekunden (oder länger) zu schauen, siehst du ein Bild, viel schöner meiner Meinung nach, zumindest weißt du, dass die App gestartet wurde. Werfen Sie einen Blick auf diese – pambuk

Antwort

35

Android Sie Vorteil der Verwendung eines Splash-Screen nehmen schlägt vor, bei der Durchführung von langwierige Berechnungen beim Start. Hier ist ein Auszug aus der Android Developer Website - Entwerfen für die Reaktionsfähigkeit:

"Wenn Ihre Anwendung eine zeitaufwändige Ersteinrichtung hat, können Sie einen Begrüßungsbildschirm anzeigen oder die Hauptansicht so schnell wie möglich rendern und die Informationen asynchron ausfüllen In beiden Fällen sollten Sie irgendwie angeben, dass Fortschritte gemacht werden, damit der Benutzer nicht bemerkt, dass die Anwendung eingefroren ist. " - Android-Entwickler-Website

Sie können eine Aktivität mit einem Fortschrittsdialog erstellen, während Sie eine AsyncTask verwenden, um den XML-Feed aus dem Internet herunterzuladen, zu analysieren, bei Bedarf in einer Datenbank zu speichern und dann die Aktivität zu starten Zeigt die Newsfeeds an. Schließen Sie den Splash-Aktivität von Finish()

Hier ist ein Skeleton-Code aufrufen:


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

    } 
} 

Hoffnung, das hilft!

+1

Problem gelöst, danke :) – pambuk

+1

Ultimate :) danke – Naruto

+0

Hi, was wenn ich mehrere Feeds habe und den zweiten Feed laden möchte NACH dem ersten Feed wird abgeschlossen und in der ersten Aktivität angezeigt. Wie mache ich simultane Threads in diesem Beispiel? – Zac

1

Ich weiß, das ist alt, aber für diejenigen von Ihnen, die immer noch mit diesem Problem konfrontiert sind, können Sie diese einfache android-splash library verwenden, um Ihren Splash-Bildschirm zu zeigen.

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

können Sie SplashTask festlegen, die ausgeführt wird, während der Begrüßungsbildschirm angezeigt wird.

Verwandte Themen