Accueil

Splash Screen UWP et Android

Tutoriel Xamarin

Posté par Véronique le 11 October 2017

Dans un projet Xamarin Forms, il est très facile de définir un splash screen avec UWP, un tout petit peu moins avec Android. Nous allons voir comment ajouter un splashscreen pour les deux plateformes.

Splashscreen pour UWP

  • Clic droit sur le project UWP -> Properties
  • Ouvrir le Package Manifest...
  • Dans l'onglet Visual Assets :
    • Dans Source, sélectionner votre logo, puis cliquer sur Generate.
    • Dans la section Display Settings, modifier le nom de votre application, et la couleur de fond de votre splash screen.

Splashscreen pour Android

On définit d’abord les couleurs que l’on souhaite utiliser dans un fichier Resources/values/colors.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <item name="white" type="color">#FFFFFFFF</item>
</resources>

Ensuite, on va définir un drawable comme étant :

  • une couleur de fond
  • une image logo, centrée

Pour cela, il faut écrire un fichier splashscreen.xml dans Resources/Drawables.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/white" />
    <item>
        <bitmap android:gravity="center"android:src="@drawable/logo" />
    </item>
</layer-list>

Ensuite, on définit un nouveau style qui va utiliser notre drawable splashscreen comme fond d’écran.

<style name="splashscreen" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/splashscreen</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsTranslucent">false</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>

Pour finir, on va indiquer à la MainActivity d’utiliser notre nouveau style. Pour cela, on complète l’attribut Activity :

[Activity(Label = "My Project Name", Icon = "@drawable/logo", Theme = "@style/splashscreen", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]