Realizzare uno splash screen per un’ applicazione android

Creato il 23 agosto 2011 da Magnus

Oggi vi propongo delle utili indicazioni su come realizzare uno splash screen per la vostra prossima applicazione Android.
 

Come prima cosa inseriamo nel consueto file string.xml le stringhe che verranno utilizzate nella nostra app:
 

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">SplashScreen</string>

    <string name="main_screen">MainScreen</string>

    <string name="splash_screen">SplashScreen</string>

</resources>

Definiamo poi il layout del nostro splash screen (  splash.xml ):

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/splash_screen"

    />

</LinearLayout>

Ovviamente il layout è un pò spartano, ma è comunque migliorabile a seconda delle esigenze.

Creiamo una nuova activity ( la prima ) che esegua lo splash screen e che richiami poi una nuova Activity ( nota: l'activity di arrivo dovrà essere realizzata in modo simile a quella dello splash, ma senza la gestione del tread ovviamente ) :
 

protected boolean _active = true;

protected int _splashTime = 5000; // time to display the splash screen in ms

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.splash);

    // thread for displaying the SplashScreen

    Thread splashTread = new Thread() {

        @Override

        public void run() {

            try {

                int waited = 0;

                while(_active & (waited < _splashTime)) {

                    sleep(100);

                    if(_active) {

                        waited += 100;

                    }

                }

            } catch(InterruptedException e) {

                // do nothing

            } finally {

                finish();

                startActivity(new Intent("com.magnus.android.splashscreen.MyApp"));

                stop();

            }

        }

    };

    splashTread.start();

    

E' tutto!