Ich entwickle eine Anwendung, die im Grunde genommen viele Daten zu Beginn der Anwendung selbst herunterlädt und in ListActivity anzeigt. Ich plane, einen Begrüßungsbildschirm anzuzeigen, bis die Daten geladen sind.
Bis jetzt waren alle meine Versuche erfolglos. Ich habe die von anddev.org erwähnten Methoden ausprobiert, aber mein Problem ist, dass die Hauptaktivität beginnen sollte, aber der Begrüßungsbildschirm sichtbar sein sollte, bis ich meine ListActivity auffülle. Kurz gesagt, ich muss die folgenden Schritte ausführen:
Hoffe du verstehst wie es ist ....
dies ist der beste Weg, um einen Begrüßungsbildschirm zu erstellen: http://Android-developers.blogspot.de/2009/03/window-backgrounds-ui-speed.html
Ich habe lange danach gesucht, von Androids Docs aus. Wenn Sie diese schwarzen Bildschirme vermeiden möchten, müssen Sie ein Thema mit windowBackground erstellen.
<resources>
<style name="Theme.Shelves" parent="Android:Theme">
<item name="Android:windowBackground">@drawable/background_shelf</item>
<item name="Android:windowNoTitle">true</item>
</style>
</resources>
Und stellen Sie dieses Thema als Thema für Ihre Hauptaktivität ein ... TADA, Begrüßungsbildschirm von der ersten Sekunde an.
Wenn Sie einen komplexen Hintergrund wünschen und nicht nur ein Bild, das gestreckt wird, um es auszufüllen, können Sie Drawables verwenden. Hier ist ein Beispiel für eine Ebenenliste, bei der das Logo mit einem schwarzen Hintergrund zentriert bleibt:
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item Android:drawable="@color/black">
</item>
<item>
<bitmap
Android:gravity="center"
Android:src="@drawable/logo"
Android:tileMode="disabled" >
</bitmap>
</item>
</layer-list>
Beispiel für einen Begrüßungsbildschirm:
public class MainActivity extends Activity {
private ImageView splashImageView;
boolean splashloading = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
splashImageView = new ImageView(this);
splashImageView.setScaleType(ScaleType.FIT_XY);
splashImageView.setImageResource(R.drawable.ic_launcher);
setContentView(splashImageView);
splashloading = true;
Handler h = new Handler();
h.postDelayed(new Runnable() {
public void run() {
splashloading = false;
setContentView(R.layout.activity_main);
}
}, 3000);
}
}
- Starte meine Haupttätigkeit.
- Zeigen Sie den Begrüßungsbildschirm an.
- Führen Sie den Prozess im Hintergrund aus.
- Beenden Sie den Begrüßungsbildschirm, wenn die Verarbeitung abgeschlossen ist, und zeigen Sie die Hauptliste an.
Ich habe es auf diese Weise versucht, aber das Problem ist; Es wird die Hauptaktivität angezeigt, bevor die Aktivität des Begrüßungsbildschirms gestartet wird.
Ich habe es so gemacht:
Mein Problem ist, wie man "das Menü der Begrüßungsbildschirmaktivität anzeigen" deaktiviert, indem man die Menü-Taste drückt.
Bearbeiten:
Showmenü deaktivieren:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.activity_main, menu);
return false;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// return super.onMenuItemSelected(featureId, item);
return false;
}