2016-05-13 28 views
2

Wir verwenden den Begrüßungsbildschirm, um das Firmenlogo jedes Mal anzuzeigen, wenn Benutzer die App öffnen. Momentan zeigen wir den Begrüßungsbildschirm für 3 Sekunden.Android Splash Screen Dauer

Unten ist der Code:

private static int SPLASH_TIME_OUT = 3000;  // Delay of 3 Seconds 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash_screen); 


     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       // This method will be executed once the timer is over 
       Intent i = new Intent(SplashScreenActivity.this, AnotheActivity.class); 
       startActivity(i); 
       // close this activity 
       finish(); 
      } 
     }, SPLASH_TIME_OUT); 
    } 
} 

Aber diese Dauer Splash-Screen wird im Team nur zufällig ausgewählt. Wir wissen, dass Splash-Bildschirm im Allgemeinen nicht nur Android-App-Ökosystem ist, aber da dies die Bedürfnisse unserer App ist, ist es implementiert.

Meine Frage: Gibt es eine Standard-Android-Richtlinie/Best Practice für die Wahl der richtigen Splash-Bildschirm-Dauer?

+0

Wenn Sie etwas nicht tun, in diesen 3 Sekunden, warum es auch zeigen? * Das ist die Notwendigkeit unserer App * Was ist das? –

+0

* Gibt es eine Standard-Android-Richtlinie/Best Practice für die Auswahl der richtigen Splash-Bildschirm-Dauer *. Wie du schon sagtest, es wird nicht ermutigt, warum erwartest du Best Practices für etwas * nicht ermutigt * – Blackbelt

+0

@Blackbelt Da es solche gängigen Idiome in Android gibt, daher! Aber es ist in Ordnung, wenn es keinen solchen Benchmark gibt. – AADProgramming

Antwort

2

Eine bessere Option ist die Verwendung einer Begrüßungsbildschirmaktivität mit einem benutzerdefinierten Thema, mit der die Hauptinhaltsaktivität gestartet wird. Damit ist es nicht nötig einen Timer zu verwenden, da dieser auf den Hauptinhalt wechselt wenn die App bereit ist und in der Zwischenzeit ein Bild zeigt das sich innerhalb des Themes befindet.

Hier Tutorial, wie man es tun - https://www.bignerdranch.com/blog/splash-screens-the-right-way/

Hauptteile aus dem Tutorial:

<activity 
    android:name=".SplashActivity" 
    android:theme="@style/SplashTheme"> THEME HERE!!! 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 


public class SplashActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     finish(); 
    } 
} 

<style name="SplashTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> 
    <item name="android:windowBackground">@drawable/splash</item> 

</style> 


<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:drawable="@color/black"/> 

    <item> 

     <bitmap 

      android:gravity="center" 
      android:src="@drawable/logo_image"/> 

    </item> 

</layer-list> 

Es ist sogar möglich, den Stil, um die Anwendung hinzuzufügen, ohne dass eine separate Aktivität zu verwenden, .

+0

, wie ich sehen kann, gibt es keine Std. es scheint für was sollte die Dauer für Splash-Bildschirm sein. Daher können wir eine Alternative zum platsch verwenden und ich denke, dass Ihre Lösung für diese Anpassung geeignet ist. – AADProgramming

0

Google Richtlinien sind ziemlich klar. Verwenden Sie den Begrüßungsbildschirm nur, wenn Sie müssen. (Wenn Sie dem Benutzer nichts anzeigen möchten) Es sollte nur sichtbar sein, bis Sie einige Daten zur Anzeige haben. Wenn Sie durch Google Apps gehen, werden Sie sehr bald einen Splashscreen sehen. Es gibt viel cleverere Möglichkeiten, um Ihre App zu brandmarken. Sie können weitere Daten here finden.

+0

'... nur wenn du musst' Deshalb machen wir es meistens. Das heißt: Laden der Grafiken oder Erstellen einer Datenbank ** bevor ** die App startet. –

+0

Dann zeigen Sie es nur, bis alles geladen ist. Zeigen Sie es nicht für eine bestimmte Zeit. –

+0

... was das OP eigentlich verlangt hat. –

0

Splash-Screen ist es schlechte Praxis, wenn es möglich ist, es nicht als verwenden Sie bitte vermeiden, Splash-Screen verwenden. Sie können einige Artikel über diese link1, link2 lesen.

Wenn jedoch Splash angezeigt werden muss, verwenden Sie ein benutzerdefiniertes Design, das android:windowBackground überschreibt. Ersetzen Sie dann dieses benutzerdefinierte Design durch Ihr Standardthema, bevor Sie super.onCreate() aufrufen. Hier ist tutorial der Implementierung und detaillierte Beschreibung.

Angenommen, Sie haben ein Thema genannt AppTheme, würde Ihr Launcher Thema sein:

<style name="AppTheme.Launcher"> <item name="android:windowBackground">@drawable/launch_screen</item> </style>

Dann wird Ihr Thema in Ihrem AndroidManifest.xml auf Ihre Tätigkeit gelten Übergang mit android:theme="@style/AppTheme.Launcher".

Der einfachste Weg, Zurück zu Ihrem normalen Thema ist setTheme (R.style.AppTheme) vor super.onCreate() und setContentView() aufzurufen:

public class MyMainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { // Make sure this is before calling super.onCreate setTheme(R.style.Theme_MyApp); super.onCreate(savedInstanceState); // ... } }

+1

Manchmal ist es ein ** brauchen **. Das heißt: Laden Sie alle Grafiken oder erstellen Sie eine Datenbank, bevor die App startet. –

+0

Wenn es unnötigerweise verwendet wird, könnte es schlecht sein, aber in einigen Fällen wird es benötigt, außerdem kann es verwendet werden, um Ihre Marke zu stärken, natürlich, wenn es richtig verwendet wird !! – varunkr

+0

Aber was ** wenn es notwendig ist **, was bei den meisten ** bewussten Entwicklern der Fall ist **? –