Sunteți pe pagina 1din 6

Construyendo una splash screen en Android

9 enero, 2013 / COMO HAGO ESO EN MI APP?

Si eres desarrollador de aplicaciones desktop, el concepto de splashscreen te sonara conocido, es una pantalla que carga justo cuando abres la aplicacin y que generalmente tiene algn aviso como Cargando., una barra de progreso y una bonita animacin indicndote que algo esta sucediendo y que esperes pacientemente que ya terminara y entonces podrs usar la aplicacin con total normalidad. Este tipo de pantalla tambin las vemos muy frecuentemente en videojuegos tiene el propsito de darle tiempo a la aplicacin que cargue una serie de recursos (imgenes, vdeos etc, etc) o haga algn tipo de procesamiento al inicio para que luego la rapidez de el sistema mejore. En el mundo Android las splashscreen tambin son comunes. Este articulo trata de como hacer una pantalla de ese tipo.

1. Crea un nuevo proyecto


Si aun no sabes como crear un proyecto nuevo necesitas darte una vuelta por aqu mejor.

2. Crea la SplashScreenActivity
Creamos una nueva Activity en blanco dentro de nuestro proyecto, le ponemos como nombre SplashScreenActivity.

Menu File de tu Eclipse y luego New

Una activity en blanco no lo olvides

Llena los datos como se muestra en la imagen

Un preview de los archivos que cambiaran

Activity creada

3. Escribe la magia
Abre SplashScreenActivity.java, modificalo conforme al siguiente cdigo
package com.androidnauta; import java.util.Timer; import java.util.TimerTask; import android.os.Bundle; import android.app.Activity; import android.content.Intent; public class SplashScreenActivity extends Activity {

private long splashDelay = 6000; //6 segundos @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash_screen); TimerTask task = new TimerTask() { @Override public void run() { Intent mainIntent = new Intent().setClass(SplashScreenActivity.this, MainActivity.class); startActivity(mainIntent); finish();//Destruimos esta activity para prevenit que el usuario retorne aqui presionando el boton Atras. } }; Timer timer = new Timer(); timer.schedule(task, splashDelay);//Pasado los 6 segundos dispara la tarea } }

Lo que estamos haciendo en este punto es simular que la aplicacin esta tardando 6 segundos en procesar algo (cargando recursos, actualizndose de un servidor externo, descargando contenido de la web, etc, etc) e inmediatamente al terminar esa tarea se redirige a la pantalla principal, no sin antes haber destruido la SplashScreenActivity para prevenir que el usuario regrese ah presionando el botn atrs de su dispositivo mvil.

4. Modifica el AndroidManifest.xml
Necesitamos cambiarlo para indicarle que la Activity de entrada de la aplicacin ya no sera la MainActivity sinoSplashScreenActivity, sino lo hacemos jamas se ejecutara nuestra pantalla recin creada. Ademas una SplashScreen se caracteriza por ser una pantalla sin botones ni barra de titulo, as que tambin le quitaremos eso.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androidnauta" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.androidnauta.SplashScreenActivity"

android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.androidnauta.MainActivity" android:label="@string/app_name" > </activity> </application> </manifest>

5. Una bonita imagen hace crecer la paciencia


Bueno tal vez esta afirmacin no sea del todo cierta pero, es preferible mostrarle una imagen o un mensaje de Loading al usuario que dejarlo con la pantalla en blanco creyendo que la aplicacin ha dejado de funcionar. Siempre es necesario decirle al usuario que algo esta pasando y que tenga paciencia. Modificamos el layout de la Activity (activity_splash_screen.xml) y le agregamos una bonita imagen
<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" tools:context=".SplashScreenActivity" > <ImageView android:id="@+id/imageView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/splash_screen_angry_birds" /> </RelativeLayout>

Si dejas la pantalla en vertical veras como la imagen se ve alargada y espantosa, un completo repelente para que los usuarios amen tu aplicacin por lo que ajustaremos la orientacin de la Activity a la posicin en la que mejor se vea la imagen (en este caso horizontal) y forzaremos a que la pantalla se mantenga as eso lo hacemos modificando una vez mas elAndroidManifest.xml
<activity android:name="com.androidnauta.SplashScreenActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:screenOrientation="landscape"> <intent-filter>

Rovio descubrimos como lo hacen!!!

Una

funcionalidad comn,

implementada

en

unos

cuantos

pasos fciles

y rpidos ahora que hagas esperar al usuario puedes mostrarle una nada desesperante splashscreen Y en tus aplicaciones has hecho algo similar? Tienes otra forma de hacerlo? Comparte!! los comentarios estn abiertos.

S-ar putea să vă placă și