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!