samedi 5 novembre 2011

Construire son splashScreen



Un splash screen peut être très utile. Il permet de rendre votre application plus professionnel si celui ci est assez design.Cela vous permet aussi de charger votre interface. D’autant plus si vous avez besoin de télécharger des fichiers via la 3G avec les problèmes de débits que cela suppose.


Notre classe implémente Runnable, ce qui nous permet d’implémenter la fonction run(). En gros on pourra lancer un thread avec this en paramètre. Ce thread effectuera les opération de préparation de l’interface.Par exemple, télécharger des données via la 3G pour replir un adapter).


Puis notre fonction handleMessage() terminera les opérations sur l’interface: pour nous, ce sera cacher l’ImageView du splashscreen mais cela aurait pu être initialiser un adapter avec les données précédemment chargées.

view sourceprint
?
public class splashScreen extends Activity implements Runnable{


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // On lance le thread
        launchWait();
    }
    private Handler handler = new Handler() {


        @Override
        public void handleMessage(Message msg) {
        // On cache l'image
            ((ImageView)findViewById(R.id.img_splash))
                .setVisibility(ImageView.INVISIBLE);
        }
    }
    private void launchWait(){
        // On lance le thread
        Thread t = new Thread(this);
        t.start();
    }
    @Override
    public void run() {
        /*
           C'est ici qu'on effectue les différentes opérations
          pouvant geler l'interface
          graphique si elles avaient été faites dans la méthode
          onCreate().
        */
/*
On envoi un signal à notre handler ce qui exécutera la fonction handleMessage.
Le paramètre (ici 0) est un identifiant qui peut être testé dans les fonction handlerMessage.
Nous aurions pu tout aussi bien utilisé plusieurs fois notre handler. Dans ce cas il aurait mieux valu utiliser des ID en constante.
*/
        handler.sendEmptyMessage(0);
    }
}

Ici, dans le layout XML, l’ImageView du splash est deja visible. On ne fais donc que la cacher une fois toutes nos opérations finies.


Voilà ! A bientôt !

0 commentaires:

Enregistrer un commentaire

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free Android website | Bloggerized by wassim El mririe - Ramzi Essid | TO Best Web Host