Xamarin.Forms Splashscreen para Android

No es secreto que el inicio de toda aplicación es un Splashscreen ya sea para mostrar el branding o verificar recursos.

Para agregar un Splashscreen en Xamarin Forms a la parte Android yo lo hago de la siguiente forma:

En la parte de la Solución que pertenece a Android vamos y agregamos un nuevo Activity yo siempre le llamo Splashscreen, el código que contendrá es el siguiente :

[Activity(Label = "Splashscreen", MainLauncher = true, NoHistory = true, Theme = "@style/Theme.Splash", 
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class SplashScreen : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        var intent = new Intent(this, typeof(MainActivity));
        StartActivity(intent);
      
    }
}

Un poco de explicacion:

 MainLauncher = true 

nos indica que este es el activity que se ejecutara primero.

NoHistory = true

evita que presionando la tecla atrás, se vuelva al Splash

 

El código de nuestro MainActivity.cs sera el siguiente:

[Activity(Label = "Splashscreen", Theme="@android:style/Theme.Holo", 
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : AndroidActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        Xamarin.Forms.Forms.Init(this, bundle);
        SetPage(App.GetMainPage());
    }
}

Ahora en el Resources.Drawable.SplashScreen.xml: 

<?xml version="1.0" encoding="utf-8" ?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
   android:src="@drawable/splash_logo"
  android:gravity="center"
  android:layout_gravity="center"/>

Que es donde definimos los elementos gráficos de nuestro splash

Ahora vamos con el Resources.Values.Styles.xml:

 

<resources>
  <style name="Theme.Splash"
    parent="android:Theme">
    <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>
</resources>

 

Ahora el ejecutar nuestra aplicación el resultado sera similar a este :

splashscreen1

Alguna duda, comentario, error o sugerencia no dudes en escribirme.

 

 

 

 

Comments

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *