Header Ads

Programación Android - Como Crear Un Splash Screen



En el presente artículo les dejo fuente de ejemplo de un Activity para SplashScreen el cual se muestra durante 1500 milisegundos y pasado ese tiempo llama a una supuesta Activity NextActivity (o bien tu siguiente Activity). Este tiempo puede ser interrumpido tocando en la pantalla.

A continuación el código fuente de la clase SplashActivity:


package com.davidg.samples;

import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;

public class SplashActivity extends Activity
 {
 protected boolean _active = true;
 protected int _splashTime = 1500; // Tiempo máximo de duración de splash (espera normal) en milisegundos.
    protected int _controlTime = 100;  // Tiempo de control de toque de pantalla en milisegundos.
 
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.splash_activity);
        
        Thread splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    int waited = 0;
                    while(_active && (waited < _splashTime)) {
                        sleep( _controlTime );
                        if(_active) {
                            waited += _controlTime;
                        }
                    }
                } catch(InterruptedException e) {
                    // Capturamos la excepción de interrupción y continuamos por finally.
                } finally {
                            
                    startActivity( new Intent(SplashActivity.this, NextActivity.class) );

                    finish();
                }
            }
        };
        splashTread.start();
    }
    
     /* Detectamos si el usuario toca la pantalla e Interrumpimos la espera normal */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            _active = false;
        }
        return true;
    }
}


Escrito por:

No hay comentarios:

ESPACIO PUBLICITARIO

Con la tecnología de Blogger.