Splash Screen

Durante lo sviluppo di una app, è possibile utilizzare, il cosidetto SplashScreen per mostrare l’icona o l’immagine di brand per un paio di secondi. Questa è una pratica comune che la maggior parte degli sviluppatori sta seguendo. Non è una buona idea utilizzare un SplashScreen perchè spreca il tempo dell’utente. Questo dovrebbe essere rigorosamente evitato.

Il modo giusto di implemetare uno splash screen è un po ‘diverso. Nel nuovo approccio specificare il background come sfondo del tema dell’activity principale. La causa principale del problema della pagina bianca vuota è che il file di layout è visibile solo dopo che l’applicazione è stata completamente inizializzata. Invece di creare un layout per la activity dello splash screen, specificare (come background) un tema per l’activity splash screen.
Iniziamo col creare innanzitutto una schermata XML disegnata in background.xml all’interno della cartella res / drawable:

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

Ora definiamo (all’interno del res/values/styles.xml) l’item di tipo background:

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>

Dichiariamo (all’interno del AndroidManifest.xml) la propietà “background” dell’activity SplashActivity.

<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
 <intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
</activity>

Ora possiamo creare l’activity vuota (SplashActicity.class) rigorosamente senza il rispettivo layout in formato xml, questo perchè si limiterà (nell’evento onCreate()) a richiamare l’activity principale.

package com.androidjavapoint.splashscreen;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
        // Start home activity
        startActivity(new Intent(SplashActivity.this, HomeActivity.class));
        // close splash activity
        finish();
     }
 }


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *