Ich wollte, dass meine App professioneller aussieht, und entschied mich daher, einen Begrüßungsbildschirm zu erstellen.
Wie würde ich es erstellen und dann implementieren?
android
splash-screen
Ephraim
quelle
quelle
Antworten:
Weiterführende Literatur:
Alte Antwort:
WIE MAN : Einfacher Begrüßungsbildschirm
Diese Antwort zeigt Ihnen, wie Sie einen Begrüßungsbildschirm für einen festgelegten Zeitraum anzeigen, wenn Ihre App beispielsweise aus Branding-Gründen gestartet wird. Sie können beispielsweise den Begrüßungsbildschirm 3 Sekunden lang anzeigen. Wenn Sie jedoch den Begrüßungsbildschirm für eine variable Zeitspanne (z. B. Startzeit der App) anzeigen möchten, sollten Sie die Antwort von Abdullah unter https://stackoverflow.com/a/15832037/401025 lesen . Beachten Sie jedoch, dass der App-Start auf neuen Geräten möglicherweise sehr schnell erfolgt, sodass der Benutzer nur einen Flash sieht, der unter UX fehlerhaft ist.
Zuerst müssen Sie den Begrüßungsbildschirm in Ihrer
layout.xml
Datei definierenUnd deine Tätigkeit:
Das ist alles ;)
quelle
SPLASH_DISPLAY_LENGTH
Zeit anzuhalten . Sie sollten dies stattdessen tun: bignerdranch.com/blog/splash-screens-the-right-wayBeachten Sie, dass der Benutzer bei dieser Lösung nicht länger warten muss: Die Verzögerung des Begrüßungsbildschirms hängt von der Startzeit der Anwendung ab.
Wenn Sie eine Android-App öffnen, wird standardmäßig ein schwarzer Bildschirm mit dem Titel und dem Symbol der App angezeigt. Sie können dies mithilfe eines Stils / Themas ändern.
Erstellen Sie zunächst eine style.xml im Werteordner und fügen Sie einen Stil hinzu.
Anstatt zu verwenden
@android:style/Theme.DeviceDefault.Light.NoActionBar
, können Sie jedes andere Thema als übergeordnetes Thema verwenden.Zweitens fügen
android:theme="@style/splashScreenTheme"
Sie in Ihrer App Manifest.xml Ihrer Hauptaktivität hinzu.Drittens aktualisieren Sie Ihr Thema in Ihrer onCreate () -Startaktivität.
UPDATE Schauen Sie sich diesen Beitrag an .
Vielen Dank an @ mat1h und @adelriosantiago
quelle
<item name="android:background">
das überschreiben würdewindowBackground
. Und ohneandroid:background
Definition wäre mein Hintergrund in irgendwelchen Fragmenten transparent und würde die Aktivität hinter dem Vordergrundinhalt enthüllen.Ihre Splash.java könnte folgendermaßen aussehen:
Wechseln Sie
ActivityB.class
zu der Aktivität, die Sie nach dem Begrüßungsbildschirm starten möchtenÜberprüfen Sie Ihre Manifestdatei und es sollte so aussehen
quelle
Die obigen Antworten sind sehr gut, aber ich möchte noch etwas hinzufügen. Ich bin neu in Android, ich habe dieses Problem während meiner Entwicklung getroffen. hoffe, das kann jemandem wie mir helfen.
Der Begrüßungsbildschirm ist der Einstiegspunkt meiner App. Fügen Sie daher die folgenden Zeilen in AndroidManifest.xml hinzu.
Der Begrüßungsbildschirm sollte nur einmal im App-Lebenszyklus angezeigt werden. Ich verwende eine boolesche Variable, um den Status des Begrüßungsbildschirms aufzuzeichnen, und zeige ihn nur beim ersten Mal an.
Viel Spaß beim Codieren!
quelle
android:noHistory="true"
inAndroidManifest.xml
von dem Benutzer zu verhindern , dass der Splash - Screen mit der Zurück - Taste zurück.Abdullahs Antwort ist großartig. Aber ich möchte mit meiner Antwort noch einige Details hinzufügen.
Implementieren eines Begrüßungsbildschirms
Die richtige Implementierung eines Begrüßungsbildschirms ist etwas anders, als Sie sich vorstellen können. Die angezeigte Begrüßungsansicht muss sofort bereit sein, noch bevor Sie eine Layoutdatei in Ihrer Begrüßungsaktivität aufblasen können.
Sie werden also keine Layoutdatei verwenden. Geben Sie stattdessen den Hintergrund Ihres Begrüßungsbildschirms als Themenhintergrund der Aktivität an. Erstellen Sie dazu zunächst ein XML-Zeichen in res / drawable.
background_splash.xml
Es ist nur eine Ebenenliste mit Logo in der mittleren Hintergrundfarbe.
Öffnen Sie nun styles.xml und fügen Sie diesen Stil hinzu
Dieses Thema muss eine Aktionsleiste und einen Hintergrund haben, den wir gerade oben erstellt haben.
Und im Manifest müssen Sie SplashTheme auf Aktivität setzen, die Sie als Splash verwenden möchten.
Navigieren Sie dann in Ihrem Aktivitätscode zum Benutzer nach dem Spritzen mit Absicht zu dem bestimmten Bildschirm.
Das ist der richtige Weg. Ich habe diese Referenzen als Antwort verwendet.
quelle
YouTube
dazu gesehen. Aber ich denke, die Bitmap-Größe wird das Problem sein, da Sie die Größe nicht mit ändern könnenlayer-list
.Erstelle ein
Activity
SplashScreen.java
splashscreen.xml
wird so seinquelle
Ein Splash Screnn lässt Ihre Anwendung standardmäßig nicht automatisch professioneller aussehen. Ein professionell gestalteter Begrüßungsbildschirm bietet die Möglichkeit, Ihre Anwendung professioneller aussehen zu lassen. Wenn Sie jedoch nicht wissen, wie Sie eine schreiben sollen, wie professionell der Rest Ihrer Anwendung tatsächlich sein wird.
Der einzige Grund (Entschuldigung) für einen Begrüßungsbildschirm besteht darin, dass Sie eine große Anzahl von Berechnungen durchführen oder auf den Start von GPS / WiFi warten, da Ihre Anwendung vor dem Start darauf angewiesen ist. Ohne das Ergebnis dieser Berechnungen oder den Zugriff auf GPS / WiFi (usw.) ist Ihre Anwendung tot im Wasser, sodass Sie das Gefühl haben, einen Begrüßungsbildschirm zu benötigen, und MÜSSEN die Ansicht des Bildschirms für andere laufende Programme (einschließlich des Hintergrunds) blockieren ).
Ein solcher Begrüßungsbildschirm sollte wie Ihre Vollbildanwendung aussehen, um den Eindruck zu erwecken, dass er bereits initialisiert wurde. Nach Abschluss der langwierigen Berechnungen können die endgültigen Details ausgefüllt werden (das Bild wurde optimiert). Die Wahrscheinlichkeit, dass dies der Fall ist oder dass das Programm nur so gestaltet werden kann, ist sehr gering .
Es ist besser, dem Benutzer (und dem Rest des Betriebssystems) zu erlauben, etwas anderes zu tun, während er wartet, als Ihr Programm so zu gestalten, dass es von etwas abhängig ist, das eine Weile dauert (wenn die Dauer des Wartens ungewiss ist).
Auf Ihrem Telefon befinden sich bereits Symbole, die darauf hinweisen, dass GPS / WiFi gestartet wird. Die Zeit oder der Platz, die der Begrüßungsbildschirm einnimmt, kann zum Laden von Vorberechnungen oder zum tatsächlichen Ausführen der Berechnungen verwendet werden. Unter dem ersten Link unten finden Sie Informationen zu den von Ihnen verursachten Problemen und zu den zu berücksichtigenden Problemen.
Wenn Sie unbedingt auf diese Berechnungen oder GPS / WiFi warten müssen, lassen Sie die Anwendung am besten einfach starten und es erscheint ein Popup, in dem angegeben wird, dass auf die Berechnungen gewartet werden muss (eine TEXTUAL "Initializing" -Nachricht ist in Ordnung). Das Warten auf GPS / WiFi wird erwartet (wenn sie nicht bereits in einem anderen Programm aktiviert waren), sodass die Ankündigung ihrer Wartezeiten nicht erforderlich ist.
Denken Sie daran, dass Sie, wenn der Begrüßungsbildschirm startet, Ihr Programm bereits ausgeführt wird, lediglich die Verwendung Ihres Programms verzögern und die CPU / GPU dazu zwingen, etwas zu tun, das die meisten nicht für notwendig halten.
Wir sollten besser jedes Mal, wenn wir Ihr Programm starten, wirklich abwarten und Ihren Begrüßungsbildschirm sehen, sonst werden wir nicht das Gefühl haben, dass er sehr professionell geschrieben ist. Wenn Sie den Begrüßungsbildschirm zum VOLLSTÄNDIGEN Bildschirm und ein Duplikat des eigentlichen Programmbildschirms machen (wir glauben also, dass er initialisiert wird, obwohl dies nicht der Fall ist), KÖNNTE Ihr Ziel (Ihr Programm professioneller aussehen zu lassen) erreicht werden, aber ich würde nicht viel darauf wetten.
Warum nicht ? Http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/
Vorgehensweise: https://encrypted.google.com/search?q=Android+splash+screen+source
Es gibt also einen guten Grund, dies nicht zu tun, aber wenn Sie sicher sind, dass Ihre Situation irgendwie außerhalb dieser Beispiele liegt, sind die Mittel dafür oben angegeben. Stellen Sie sicher, dass Ihre Anwendung dadurch wirklich professioneller aussieht, oder Sie haben den einzigen Grund, den Sie dafür angegeben haben, besiegt.
Es ist wie bei einem YouTube-Kanal, der jedes Video mit einem langen grafischen Intro (und Outro) startet oder das Bedürfnis hat, einen Witz zu erzählen oder zu erklären, was in der letzten Woche passiert ist (wenn es sich nicht um einen Comedy- oder LifeStyles-Kanal handelt). Zeigen Sie einfach die Show! (Führen Sie einfach das Programm aus).
quelle
Vor allem die Antworten sind wirklich sehr gut. Es gibt jedoch Probleme mit Speicherverlusten. Dieses Problem wird in der Android-Community häufig als "Leckage einer Aktivität" bezeichnet. . Was genau bedeutet das nun?
Wenn Konfigurationsänderungen auftreten, z. B. Orientierungsänderungen, zerstört Android die Aktivität und erstellt sie neu. Normalerweise löscht der Garbage Collector nur den zugewiesenen Speicher der alten Activity-Instanz, und wir sind alle gut.
"Auslaufen einer Aktivität" bezieht sich auf die Situation, in der der Garbage Collector den zugewiesenen Speicher der alten Aktivitätsinstanz nicht löschen kann, da dies der Fall ist
being (strong) referenced
von einem Objekt stammt, das die Aktivitätsinstanz überlebt hat. Jeder Android-App ist eine bestimmte Speichermenge zugewiesen. Wenn Garbage Collector nicht verwendeten Speicherplatz nicht freigeben kann, nimmt die Leistung der App allmählich ab und stürzt schließlich abOutOfMemory
Fehler ab.Wie kann man feststellen, ob die App Speicher verliert oder nicht? Am schnellsten öffnen Sie die Registerkarte Speicher in Android Studio und achten beim Ändern der Ausrichtung auf den zugewiesenen Speicher. Wenn der zugewiesene Speicher weiter zunimmt und nie abnimmt, liegt ein Speicherverlust vor.
1. Speicherleck, wenn Benutzer die Ausrichtung ändern.
Zuerst müssen Sie den Splash - Screen in Ihrer Layout - Ressource definieren
splashscreen.xml
DateiFür weitere Informationen gehen Sie bitte über diesen Link
quelle
Das Anhalten auf dem Begrüßungsbildschirm für 4's 5's macht unnötig wenig Sinn. Es ist in Ordnung, wenn Sie etwas im Hintergrund laden. Befolgen Sie diesen Ansatz, um den Begrüßungsbildschirm zu implementieren: - Die richtige Implementierung eines Begrüßungsbildschirms unterscheidet sich ein wenig, als Sie sich vorstellen können. Die angezeigte Begrüßungsansicht muss sofort bereit sein, noch bevor Sie eine Layoutdatei in Ihrer Begrüßungsaktivität aufblasen können.
Sie werden also keine Layoutdatei verwenden. Geben Sie stattdessen den Hintergrund Ihres Begrüßungsbildschirms als Themenhintergrund der Aktivität an. Erstellen Sie dazu zunächst ein XML-Zeichen in res / drawable.
Hier habe ich eine Hintergrundfarbe und ein Bild eingerichtet.
Als Nächstes legen Sie dies als Hintergrund für Ihre Splash-Aktivität im Thema fest. Navigieren Sie zu Ihrer Datei styles.xml und fügen Sie ein neues Thema für Ihre Begrüßungsaktivität hinzu:
Legen Sie in Ihrem neuen SplashTheme das Fensterhintergrundattribut auf Ihr XML-Zeichenelement fest. Konfigurieren Sie dies als Thema Ihrer Splash-Aktivität in Ihrer AndroidManifest.xml:
Schließlich sollte die SplashActivity-Klasse Sie nur zu Ihrer Hauptaktivität weiterleiten:
Weitere Details finden Sie hier: 1. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 2. http://blog.goodbarber.com/3-tips-to-create-a -großer Begrüßungsbildschirm für Ihre mobile App_a287.html
quelle
Dies ist der vollständige Code hier
SplashActivity.java
In Drawables erstellen Sie diese bg_splash.xml
Erstellen Sie in styles.xml ein benutzerdefiniertes Thema
und schließlich in AndroidManifest.xml das Thema für Ihre Aktivität angeben
Prost.
quelle
drawable
Begrüßungsbildschirme sollten nicht aus einer Layoutdatei geladen werden. Beim Laden kann es dennoch zu Verzögerungen kommen.
Der beste Weg ist, ein Thema nur für Ihre
the android:windowBackground
SplashScreenActivity zu erstellen und auf eine zeichnbare Ressource zu setzen.https://www.bignerdranch.com/blog/splash-screens-the-right-way/
In einer Nussschale:
Deklarieren Sie Ihre SplashScreenActivity im Manifest:
In Ihrer SplashScreenActivity.java:
Erstellen Sie als Nächstes die Ressource für das Hintergrundfenster Ihres Themas:
Zeichnungsdatei splash.xml:
quelle
Nach Android Marshmallow ist eine andere produktive Verwendung des Splash-Bildschirms, an die ich denke , erforderlich
Android Permissions
Ihrer App .Es scheint, als würden die meisten Apps Berechtigungsanfragen auf diese Weise verarbeiten.
Dialoge machen UIX schlecht und sie unterbrechen den Hauptfluss und lassen Sie über die Laufzeit entscheiden. In Wahrheit ist es den meisten Benutzern möglicherweise egal, ob Ihre App etwas auf eine SD-Karte schreiben möchte. Einige von ihnen verstehen möglicherweise nicht einmal, was wir vermitteln wollen, bis wir es in einfaches Englisch übersetzen.
Wenn Sie gleichzeitig Berechtigungen anfordern, wird vor jedem Vorgang weniger "if else" angezeigt, und Ihr Code sieht übersichtlich aus.
Dies ist ein Beispiel dafür, wie Sie in Ihrer Begrüßungsaktivität für Geräte mit Android OS 23+ nach Berechtigungen fragen können.
Wenn alle Berechtigungen erteilt wurden ODER bereits erteilt wurden ODER die App auf Pre Marshmallow ausgeführt wird, können Sie den Hauptinhalt mit einer kurzen Verzögerung von einer halben Sekunde anzeigen, damit der Benutzer die Anstrengungen schätzen kann, die wir unternommen haben, um diese Frage zu lesen und unser Bestes zu geben.
quelle
Sie werden keine Layoutdatei verwenden. Geben Sie stattdessen den Hintergrund Ihres Begrüßungsbildschirms als Themenhintergrund der Aktivität an. Erstellen Sie dazu zunächst ein XML-Zeichen in res / drawable.
Hinweis: Der gesamte unten stehende Code ist als GitHub Link verfügbar
Hier habe ich eine Hintergrundfarbe und ein Bild eingerichtet.
Als Nächstes legen Sie dies als Hintergrund für Ihre Splash-Aktivität im Thema fest. Navigieren Sie zu Ihrer Datei styles.xml und fügen Sie ein neues Thema für Ihre Begrüßungsaktivität hinzu:
Legen Sie in Ihrem neuen SplashTheme das Fensterhintergrundattribut auf Ihr XML-Zeichenelement fest. Konfigurieren Sie dies als Thema Ihrer Splash-Aktivität in Ihrer AndroidManifest.xml:
Schließlich sollte Ihre SplashActivity-Klasse Sie nur zu Ihrer Hauptaktivität weiterleiten:
Beachten Sie, dass Sie nicht einmal eine Ansicht für diese SplashActivity einrichten. Die Ansicht kommt vom Thema. Wenn Sie die Benutzeroberfläche für Ihre Begrüßungsaktivität im Thema einrichten, ist sie sofort verfügbar.
Wenn Sie eine Layoutdatei für Ihre Begrüßungsaktivität hätten, wäre diese Layoutdatei für den Benutzer erst sichtbar, nachdem Ihre App vollständig initialisiert wurde, was zu spät ist. Sie möchten, dass der Splash nur in der kurzen Zeit angezeigt wird, bevor die App initialisiert wird.
quelle
quelle
Erstellen Sie eine Aktivität, lassen Sie uns eine Aktivität mit dem Namen 'A' erstellen, erstellen Sie dann eine XML-Datei mit dem Namen myscreen.xml, in der das Begrüßungsbildschirmbild als Hintergrund festgelegt wird, und navigieren Sie dann mit dem Countdown-Timer von einer Aktivität zur nächsten. Um zu wissen, wie man den Countdown- Timer verwendet, siehe meine Antwort in dieser Frage TimerTask in Android?
quelle
Beispiel für einen Begrüßungsbildschirm:
quelle
Der Begrüßungsbildschirm ist in Android ein wenig unbrauchbares Objekt: Er kann nicht so schnell wie möglich geladen werden, um die Verzögerung des Starts der Hauptaktivität zu verbergen. Es gibt zwei Gründe, es zu verwenden: Werbung und Netzwerkbetrieb.
Durch die Implementierung als Dialogfeld wird unverzüglich vom Begrüßungsbildschirm zur Hauptbenutzeroberfläche der Aktivität gesprungen.
Layout:
Und Start:
quelle
Ein anderer Ansatz wird durch die Verwendung von CountDownTimer erreicht
quelle
quelle
Wirklich einfacher & gr8 Ansatz:
Erstellen Sie zuerst Ihren Splash mit der folgenden Website:
https://www.norio.be/android-feature-graphic-generator/
Wählen Sie Ihr Logo und Ihren Slogan, wählen Sie Ihren schönen Hintergrund. Ändern Sie die Größe auf 4096 x 4096.
Laden Sie nun das Bild herunter und aktualisieren Sie es auf:
https://apetools.webprofusion.com/app/#/tools/imagegorilla
Und generieren Sie alle benötigten Begrüßungsbildschirme, alle Geräte, alle Plattformen.
Genießen!
Hier gibt es genügend Antworten, die bei der Implementierung helfen. Dieser Beitrag sollte anderen beim ersten Schritt der Erstellung des Begrüßungsbildschirms helfen!
quelle
Wie wäre es mit einem superflexiblen Startbildschirm, der denselben Code verwenden kann und in der Datei AndroidManifest.xml definiert ist, sodass der Code niemals geändert werden muss. Ich entwickle im Allgemeinen Codebibliotheken und mag es nicht, Code anzupassen, weil er schlampig ist.
Dann sucht die SpashActivity selbst die Metadaten nach "launch_class", um dann die Absicht selbst zu erstellen. Die Metadaten "Dauer" definieren, wie lange der Begrüßungsbildschirm aktiv bleibt.
quelle
Irgendwann den Benutzer öffnen
SplashActivity
und sofort beenden , aber die App gehen nochMainActivity
nachSPLASH_SCREEN_DISPLAY_LENGTH
.Um dies zu verhindern: In
SplashActivity
sollten Sie überprüfen, ob derSplashActivity
Vorgang abgeschlossen ist oder nicht, bevor Sie zu wechselnMainActivity
Ich hoffe das hilft
quelle
Obwohl es gute Antworten gibt, werde ich den von Google empfohlenen Weg zeigen:
1) Erstellen Sie zuerst einen
Theme
Begrüßungsbildschirm: Sie haben ein Thema mit dem Namen "splashscreenTheme
Launcher".Hinweis:
android:windowBackground
Setzt bereits Ihr Splashscreen-Bild Nrerneut in der Benutzeroberfläche ausgeführt werden muss.
Sie können hier auch Farbe anstelle eines Zeichens verwenden.
2) Setzen Sie das Thema auf Manifest von splashscreenActivity
3) Stellen Sie sicher, dass sich launch_screen
drawable
nicht imdrawable
Ordner befindet, wenn Ihr Bild nicht klein ist.Dies führt zu einem schnelleren Start des Startbildschirms und schützt Sie vor dem schwarzen Bildschirm
Es vermeidet auch zusätzliches Überziehen
quelle
Dies ist der beste Beitrag, den ich auf Begrüßungsbildschirmen gesehen habe: http://saulmm.github.io/avoding-android-cold-starts
Saúl Molinero bietet zwei verschiedene Optionen für Begrüßungsbildschirme: Nutzen Sie den Fensterhintergrund, um Ihren Startbildschirm zu animieren, und zeigen Sie die Platzhalter-Benutzeroberfläche an (eine beliebte Option, die Google heutzutage für die meisten seiner Apps verwendet).
Ich beziehe mich jedes Mal auf diesen Beitrag, wenn ich die Kaltstartzeit berücksichtigen und Benutzerabbrüche aufgrund langer Startzeiten vermeiden muss.
Hoffe das hilft!
quelle
In meinem Fall wollte ich keine neue Aktivität erstellen, um nur 2 Sekunden lang ein Bild anzuzeigen. Wenn ich meine
MainAvtivity
Bilder mit Picasso in Halterungen lade, weiß ich, dass das Laden ungefähr 1 Sekunde dauert. Deshalb habe ich beschlossen, in meiner MainActivity Folgendes zu tunOnCreate
:Beim Starten der Anwendung wird als Erstes die
ImageView
angezeigt und die Statusleiste entfernt, indem die Fensterflags auf Vollbild gesetzt werden. Dann habe ich a verwendetHandler
, um 2 Sekunden lang zu laufen. Nach 2 Sekunden lösche ich die Vollbild-Flags und stelle die Sichtbarkeit vonImageView
to einGONE
. Einfach, einfach, effektiv.quelle
Es ist wirklich einfach in Android, wir verwenden nur das Handler-Konzept, um den Begrüßungsbildschirm zu implementieren
Fügen Sie diesen Code in Ihre Java-Datei SplashScreenActivity ein.
Fügen Sie in Ihre SplashScreenActivity-XML-Datei ein beliebiges Bild mit der Bildansicht ein.
quelle
Sie können dies in Ihre onCreate-Methode einfügen
Und initialisieren Sie Ihren Zeitwert in Millisekunden, wie Sie möchten ...
Für weitere Informationen laden Sie den vollständigen Code von diesem Link herunter ...
https://github.com/Mr-Perfectt/Splash-Screen
quelle
In Kotlin schreiben Sie diesen Code: -
Hoffe das wird dir helfen. Danke ........
quelle
Einfacher Code, es funktioniert :) Einfaches Spritzen
quelle
quelle