Loupe

Ajouter un splashscreen à vos applications Flutter

Tout développeur d'applications mobile a l'habitude d'ajouter un splash screen à ses applications mobiles.

Mais c'est quoi un splash screen ?

Le splash screen est le premier écran, l'écran de lancement de l'application, qui s'affiche pendant le chargement de l'application.

Ci-dessous des exemples de splash screens de célèbres applications que vous reconnaitrez sans doute :

splash_word.jpg

Que serait-une application sans splash screen ?

Pourquoi mettre un splashscreen

On parle de splash screen comme si c'était une évidence, mais vous vous demandez peut-être pourquoi mettre un splash screen ?

A cela, je vous répondrai que même si votre application est légère, en fonction du mobile sur lequel votre application s'exécutera, le démarrage pourra être plus long que vous ne l'aviez constaté. Imaginez qu'un utilisateur soit bloqué plusieurs secondes sur un écran blanc/gris (sans splash screen), il se demandera ce qui ce qui se passe. Il ne saura pas s'il a bien lancé la bonne application car sur cet écran il n'y a aucun indicateur permettant de savoir ou l'on se trouve.

Afficher un splash screen permet de réduire le sentiment d'un long temps de chargement et permet également de rendre l'expérience utilisateur plus agréable à l'aide d'un joli écran.

01_nosplash.png

Ca fait pas rêver….

Aujourd'hui, nous allons donc ajouter un splash screen à notre petite application créée lors des articles précédant. Pour ceux qui ont loupé certains épisodes, voici ce que nous avons vu jusque là :

Pour cette partie là, je ne vais pas vous être d'une grande utilité. Si vous en avez déjà un, reprenez le logo de votre application, c'est généralement ce qui est affiché dans un splash screen. Sinon, dessinez un logo ou n'importe quelle image que vous voudrez afficher sur cette page.

Voici le beau logo que j'ai choisi d'utiliser :

mint.png

Il est beau, n'est-ce-pas ? :D

Android

Maintenant que nous avons une belle image, nous allons l'utiliser.

Tous les développeurs Android devraient être repéré dans cette partie. En effet, nous allons manipuler les classes java ainsi que les fichiers de ressources exactement de la même façon que dans un projet Android natif.

Passage en plein écran

Pour que notre splash screen soit plus propre, nous allons l'afficher en plein écran, sans la status bar donc. Pour cela, dans android > app > res > values modifions (ou ajoutons s'il n'existe pas) le fichier style.xml pour ajouter la ligne à l'intérieur de la balise <style> :

<item name= "android:windowFullscreen">true</item>

Cette ligne indique que l'application sera en plein écran. Pour que seul le splash screen soit en plein écran, nous allons modifier la classe MainActivity.java afin de désactiver le plein écran pour les écrans suivants.

Ajoutons donc le code suivant à l'intérieur de la méthode onCreate de la classe MainActivity :

import android.view.ViewTreeObserver;
import android.view.WindowManager;

[...]
//Remove full screen flag after load
ViewTreeObserver vto = getFlutterView().getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
    getFlutterView().getViewTreeObserver().removeOnGlobalLayoutListener(this);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
});

Voilà, avec ceci seul notre splash screen apparaitra en plein écran.

Import des images

Avant de créer le splash screen à proprement parler, nous allons importer notre belle image créée précédemment.

Création du splash

Maintenant, nous allons créer/modifier le drawable, c'est à dire la ressource qui décrit l'image à afficher. Normalement le fichier launch_background.xml existe déjà dans votre dossier android > app > res > drawable, nous allons donc le modifier pour qu'il utilise notre nouvelle image.

Pour cela, allons dans le fichier launch_background.xml et modifions le pour qu'il utilise notre image en tant que bitmap :

<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/splash" />
    </item>
</layer-list>

Démarrons notre application and..... TADA ! Il est tout beau notre splash screen non ? :)

01_splash_and.png

iOS

Passons donc à l'ajout du splash screen pour iOS. Pour cela, avec Xcode, ouvrons le projet Runner.xcworkspace et ouvrons Assets.xcassets. Faites-y glisser vos images (préalablement créées en 3 tailles différentes : x1, x2 et x3).

Capture d’écran 2019-05-02 à 15.26.35.png

TADA!

Comme chanterait un très grand chanteur :

Beau beau beau il est beau le logo, il est laid le bidet

Capture d’écran 2019-05-02 à 15.44.26.png

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus