Android App Splash Screen
In questo articolo vedremo come inserire uno splash screen animato in un app Android.
Utilizzeremo uno dei tanti tool presenti on line che permettono di inserire animazioni in pagine web e app. Sto parlando di lottieanimation.
In realtà possiamo utilizzare qualunque portale o applicazione che produce un file Json contenente l’animazione. Ad esempio possiamo utilizzare
haikuanimator software opensource per generare ogni tipo di animazione.
Vediamo quali sono le fasi per realizzare il nostro Splash Screen.
Fase 1: inclusione del file Json
Qualunque sia l’origine del file json contentente l’animazione, dobbiamo includerlo nel nostro progetto.
Clicchiamo con il tasto destro sulla directory resources e aggiungiamo una cartella di risorse Android. Nel menu scegliamo “raw”. Quindi incolliamo il nostro jason file in questa directory.
Fase 2: inclusione di lottie nelle dipendenze
Se abbiamo utilizzato lottie per generare il nostro file json dovremo includere delle dipendenze.
Nel file gradle.xml inseriamo le seguenti linee di codice
dependencies { implementation 'com.airbnb.android:lottie:$lottieVersion' }
Al posto di $lottieVersion andremo ad inserire l’ultima versione di Lottie. Ad esempio nel momento in cui questo articolo viene scritto la versione è la 5.2.0
Possiamo trovare questa informazione qui insieme ad altre informazioni utili. effetuiamo quindi il resync.
Fase 3: creazione di un’Activity apposita che contenga il nostro splash file
A questo punto inseriamo un’empty activity. Possiamo darle il nome che vogliamo, ma è preferibile chiamarla con un nome che ne evidenzi la funzione. La chiameremo SplashActivity.
Disegniamo quindi il nostro splah screen nel modo che riteniamo più opportuno.
Apriamo il file activity_splash.xml e qui incolliamo la nostra lottieanimation View.
<com.airbnb.lottie.LottieAnimationView android:id="@+id/lottieAnimationView" android:layout_width="wrap_content" android:layout_height="400dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.19" app:lottie_autoPlay="true" app:lottie_rawRes="@raw/splash2"> </com.airbnb.lottie.LottieAnimationView>
Si noti anzitutto che il link al file json contente l’animazione è dato da questa riga: app:lottie_rawRes="@raw/splash2"
Qui, dopo @raw/andremo ad inserire il nome del file json senza estensione.
Fase 4: facciamo partire l’applicazione dalla Splash Activity
Andiamo nel file AndroidManifest.xml e togliamo dalla main activity le righe che individuano questa attività come quella iniziale dell’applicazione e trasferiamole sulla Splash activity.
<activity android:name=".SplashActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:exported="false"> </activity>
Fase 5: Aprire l’activity principale
Dopo la visualizzazione dello Splash Screen l’applicazione andrà ad aprire un’altra activity.
Nella Splash Activity utilizzeremo la classe Thread per fare questa operazione.
Thread thread =new Thread(){ public void run(){ try { Thread.sleep(5000); } catch (Exception e){ e.printStackTrace(); } finally { Intent intent = new Intent(SplashActivity.this, MainActivity.class); startActivity(intent); } } }; thread.start();
Il thread verrà momentaneamente messo in sleep Thread.sleep(5000);
per cinque secondi durante i quali l’animazione verrà eseguita.
Scaduto questo tempo verrà avviata l’activity principale.
finally { Intent intent = new Intent(SplashActivity.this, MainActivity.class); startActivity(intent); }
Ricordiamo infatti che Il blocco finally viene sempre eseguito quando il blocco try esce.