1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Preloader Image in Android App einbauen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Flixius, 29.05.2011.

  1. Flixius, 29.05.2011 #1
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Hallo,
    über die Suchfunktion habe ich leider noch keinen entsprechenden Thread gefunden. Falls dieses Thema hier schon einmal behandelt worden ist so bitte ich um Entschuldigung.

    Ich möchte gerne in meine App beim Starten eine Grafik einblenden, die für ein paar Sekunden sichtbar bleibt bis die App gestartet wird. Eine "echte" Preaload-Funktion (also dass in einem anderen Thread die Daten für die App geladen werden) ist nicht zwingend notwendig, da das laden der Daten relativ schnell vonstatten geht. Ich hoffe ihr könnt mir etwas auf die Sprünge helfen.

    Viele Grüße
    Felix
     
  2. Flixius, 02.06.2011 #2
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Hat denn hier wirklich keiner ne Idee? :(

    Ich habe endlich etwas gefunden. Wenn man nach "Preload" und Android sucht, dann findet man logischerweise nichts sinnvolles. Ein Splashscreen ist dafür das richtige Wort.

    Leider funktioniert das ganze bei mir nicht so richtig. Dieses beispiel habe ich in meine App integriert: http://www.anddev.org/simple_splash_screen-t811.html
    Das Problem scheint darin zu bestehen, dass in meiner main.xml ein TabHost verwendet wird. In diesem befindet sich dann das LinearLayout in dem wiederrum dann der ImageView für den Splashscreen drin ist.
     
    Zuletzt bearbeitet: 02.06.2011
  3. wilco, 03.06.2011 #3
    wilco

    wilco Android-Hilfe.de Mitglied

    Beiträge:
    106
    Erhaltene Danke:
    32
    Registriert seit:
    10.08.2010
    Das Problem ist dass von Deiner App zunächst einmal die onCreate() Methode abgearbeitet werden muss bevor überhaupt etwas angezeigt wird.

    Wenn Du in dieser Methode zeitaufwändige Funktionen drin hast, dauert es halt eine Weile bis der Nutzer was zu sehen bekommt. Um hier während dieser Zeit einen Splash Screen anzuzeigen musst Du in der Tat die zeitaufwändigen Funktionen in einen separaten Thread auslagern.

    Unabhängig davon: die einfachste Methode ist es ein ImageView zu erstellen das Deinen Splash-Screen enthält. Diesen ImageView legst Du dann mit setContentView als Inhalt fest. Dann wartest Du in der App eine Weile, und setzt per erneutem setContentView Dein eigentliches Layout als Inhalt.

    Mit extra Thread sieht das dann wie folgt aus:
    In onCreate erstellst Du Deine ImageView, legst die als content fest, und startest Deinen Loader Thread der zeitaufwendige Startfunktionen erledigt.

    Sobald der Loader Thread fertig ist änderst Du per setContentView den content auf Dein reguläres Layout. Dabei darauf achten dass Du von einem seperaten Thread aus nicht setContentView aufrufen darfst...
     
  4. Flixius, 03.06.2011 #4
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Hallo wilco,

    das hast du alles sehr richtig erkannt. Aber das Problem bestand darin, dass meine MainApp sich von TabActivity ableitet während der Splashscreen keinen Tab in seinem Layout braucht.

    Ich habe es jetzt so gelöst, dass ich die MainApp (extends TabActivity) ausgelagert habe und die ausgeführte Klasse nun den Splashscreen darstellt. Nach ablauf des Timers wird aus dieser Klasse heraus dann die Tabklasse gestartet. Das funktioniert jetzt auch endlich so wie es soll.

    Hier der Code für alle, die vor einem ähnlichen Problem stehen: nopaste.info - free nopaste script and service
    Die ContentFrameActivity stellt die "alte" MainAcativity dar. Nicht vergessen im Manifest.xml die Klasse hinzuzufügen und den intent-filter zu ändern :)
     

Diese Seite empfehlen