<?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="fill_parent"
android:gravity="center"
android:textSize ="18sp"
android:text="@string/hello_world_2"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".MainActivity"
/>
</RelativeLayout>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="lfr.liem.dazkun.test.android.splashscreen"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".SplashScreen"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
package lfr.liem.dazkun.test.android.splashscreen;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class SplashScreen extends Activity {
/** Se le llama cuando la actividad es creada por primera vez*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Creamos un objeto de tipo SplashHandler
SplashHandler mHandler = new SplashHandler();
//Le seteamos cual es el XML va a usar como configurador de la actividad
setContentView(R.layout.splash_activity);
//Creamos un objeto de tipo Message
Message msg = new Message();
//Asignamos un codigo unico al mensaje
//Despues este codigo sera utilizado para identificar el mensaje.
msg.what = 0;
//Enviamos el mensaje que durara 3 segundos (3000 = 3 seg)
mHandler.sendMessageDelayed(msg, 3000);
}
//La clase Handler implementa 'handle' el manejador de los mensajes
private class SplashHandler extends Handler {
//Este metodo se usa para manejar los mensajes recibidos.
public void handleMessage(Message msg)
{
final Intent intent = new Intent();
//switch del identificador del mensaje segun su codigo
switch (msg.what) {
case 0:
super.handleMessage(msg);
//Creamos un intent para arrancar la actividad
//Nuestra intención es comenzar MainActivity
intent.setClass(SplashScreen.this,MainActivity.class);
startActivity(intent);
// finalizamos la actual actividad
SplashScreen.this.finish();
break;
default:
//Duplicamos el codigo por que solo tenemos un splash screen
//si tuvieramos alguno que tuviera que salir en caso de fallo lo pondriamos aquí
super.handleMessage(msg);
intent.setClass(SplashScreen.this,MainActivity.class);
startActivity(intent);
SplashScreen.this.finish();
break;
}
}
}
}
El onCreate es como el que tendremos en cualquiera de nuestras actividades, sencillamente inicializa y llama a su XML el cual contendrá el texto que visualizaremos y la asignación del mensaje que visualizaremos.
El objeto Handler es un controlador de mensajes que nos enviara el mensaje durante tres segundos.
La clase SplashHandler lo que hace es crear un nuevo hilo que mostrara el nuestra pantalla de inicio, el objeto Intent se ocupara de realizar la transición desde nuestro "SplashScreen" a nuestra clase principal, startActivity(intent); arrancaria esa actividad mientras que SplashScreen.this.finish(); haría que nuestra actividad finalizara. El codigo se ha repetido dos veces aunque no sea necesario, pero en toda clausula "switch" tiene que haber una opción "default:" y no quería dejarla en blanco.


























