2016-08-30 1 views
0

Nachdem ich diesen Blogpost Splash Screens the Right Way durchgesehen habe, entdeckte ich Googles neuen Ansatz zum Erstellen von Splashscreens.Hinzufügen einer Fortschrittsanzeige zu Googles neuem Splashscreen-Muster

Aber mein Problem mit dieser neuen Methode ist das Hinzufügen einer Fortschrittsbalken/Anzeige zum Splashscreen.

fand ich mehrere Lösungen, aber sie sind alle XML benutzerdefinierte Layouts statt Drawables

Ich habe auch versucht, einen Fortschrittsdialog in meinem Background_splash.xml zu schaffen, die in meinem ziehbar Ordner ist, aber ich habe einen Fehler, dass es nicht erlaubt ist .

Meine App startet vom Splash-Screen zur App-Intro-Aktivität und dann zur Hauptaktivität.

Gibt es eine Möglichkeit, dieser Art von Splashscreen einen Fortschrittsanzeige/Balken hinzuzufügen?

Im Folgenden sind meine Codes erstellt mit dem Splash-Screens der richtige Weg Tutorial

Background_splash.xml

<?xml version="1.0" encoding="utf-8"?> 

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

<item> 
    <bitmap 
     android:gravity="center" 
     android:src="@mipmap/ic_launcher"/> 

</item> 

AndroidManifest.xml

<activity 
     android:name="com.domain.app.appintro.SplashActivity" 
     android:theme="@style/SplashTheme"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

styles.xml

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

Antwort

1

Die Antwort ist, können Sie nicht! Wenn Sie den Begrüßungsbildschirm vor dem Laden der App über das Design anzeigen möchten, muss es sich um ein statisches Bild handeln.
Wenn Sie nach dem Laden der App eine Fortschrittsleiste anzeigen möchten, zum Beispiel, wenn Sie Daten herunterladen müssen, können Sie der Splash-Aktivität einen Fortschrittsbalken hinzufügen, der NACH dem Laden des statischen Bildes und der App angezeigt wird.
Wenn Sie nach dem Laden der App nicht warten müssen, verschwenden Sie nur die Zeit für den Benutzer, indem Sie eine weitere Wartezeit hinzufügen und für eine lausige App sorgen.
All dies kann aus den Kommentaren und Antworten des Artikels, den Sie verlinkt haben, verstanden werden.

+0

Danke @lionscribe Ich las die Kommentare, ich fand genau heraus, was Sie gesagt haben .. Trotzdem habe ich herausgefunden, dass Sie auch diesen Ansatz optimieren können, um reich UX –

0

Haben Sie mit AsyncTask betrachtet die progressDialog zu laden. Sie versuchen möglicherweise, etwas im Hauptthread herunterzuladen, das den Begrüßungsbildschirm zum Laden blockiert.

public class MyActivity extends Activity { 
private ProgressDialog pd = null; 
private Object data = null; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Show the ProgressDialog on this thread 
     this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false); 

     // Start a new thread that will download all the data 
     new DownloadTask().execute("Any parameters my download task needs here"); 
} 

    private class DownloadTask extends AsyncTask<String, Void, Object> { 
     protected Object doInBackground(String... args) { 
     Log.i("MyApp", "Background thread starting"); 

     // This is where you would do all the work of downloading your data 

     return "replace this with your data object"; 
    } 

    protected void onPostExecute(Object result) { 
     // Pass the result data back to the main activity 
     MyActivity.this.data = result; 

     if (MyActivity.this.pd != null) { 
      MyActivity.this.pd.dismiss(); 
     } 
    } 
}  

}

Nehmen Sie diese als Startpunkt und setzen diese als innere Klasse Ihres mainActivity.

+0

Danke für Ihre schnelle Antwort! Aber mein Startbildschirm funktioniert und ich habe vergessen zu erwähnen, dass meine App App-Intro vom Begrüßungsbildschirm zeigt, dann zu der Hauptaktivität.Wie kann ich asyncTask damit integrieren? Alles, was ich erreichen möchte, ist ein unbestimmter Fortschrittsbalken im Begrüßungsbildschirm. BTW, ich habe meine Frage bearbeitet. Danke –

+0

Wie ich Sie verstehe, müssen Sie einen Fortschrittsdialog in der Splash-Aktivität anzeigen? Und du lädst nichts herunter, nur einen statischen progressDialog? – 7geeky

+0

Absolut ja! –

0

Wie @lionscribe zu Recht gesagt hat, gibt es keine Möglichkeit, mit diesem Ansatz einen benutzerdefinierten Begrüßungsbildschirm zu erstellen. Jedoch kann diese http://saulmm.github.io/avoding-android-cold-starts denen helfen, die Elemente im neuen Splash-Screen-Ansatz animieren möchten.

+0

Sehr schön. Vielen Dank. – lionscribe

Verwandte Themen