Android App Splash Screen

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.