Documente Academic
Documente Profesional
Documente Cultură
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.
2. Crea la SplashScreenActivity
Creamos una nueva Activity en blanco dentro de nuestro proyecto, le ponemos como nombre SplashScreenActivity.
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>
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>
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.