web-dev-qa-db-fra.com

Ajouter l'écran de chargement au démarrage de l'application Android

Mon application charge la page de démarrage en 10 secondes. Pendant ce temps de 10 secondes, l’écran Android est vide ..__ Pendant ce temps, je veux ajouter l’écran de chargement. Comment l'ajouter? Et dites-moi dans l'application comment savoir que la page de démarrage est en cours de chargement? Et dites-moi comment faire dans mon application?

18
Anil M H

Vous pouvez utiliser l’écran de démarrage lors de votre premier chargement.

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread welcomeThread = new Thread() {

            @Override
            public void run() {
                try {
                    super.run();
                    sleep(10000);  //Delay of 10 seconds
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(SplashActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }

J'espère que ce code vous aide.

26
MysticMagicϡ

utilisez ProgressDialog.

ProgressDialog dialog=new ProgressDialog(context);
dialog.setMessage("message");
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);
dialog.show();

cachez-le chaque fois que votre interface utilisateur est prête pour les données. appel : 

dialog.hide();
37
Brijesh Thakur

Veuillez lire cet article

Les écrans anti-éclaboussures ne font que perdre votre temps, non? En tant que développeur Android, lorsque je vois un écran de démarrage, je sais que certains développeurs pauvres ont dû ajouter un délai de trois secondes au code.

Ensuite, je dois regarder une image pendant trois secondes jusqu'à ce que je puisse utiliser l'application. Et je dois le faire à chaque lancement. Je sais quelle application j'ai ouverte. Je sais ce que ça fait. Laissez-moi l'utiliser!

Splash affiche le bon sens

Je pense que Google ne se contredit pas; l'ancien conseil et le nouveau sont solidaires. (Cela dit, ce n’est toujours pas une bonne idée d’utiliser un écran de démarrage qui fait perdre du temps à un utilisateur. Ne le faites pas.)

Cependant, les applications Android prennent un certain temps à démarrer, en particulier sur un démarrage à froid. Il y a un retard que vous ne pourrez peut-être pas éviter. Au lieu de laisser un écran vide pendant ce temps, pourquoi ne pas montrer quelque chose de bien à l'utilisateur? C'est l'approche préconisée par Google. Ne perdez pas le temps de l'utilisateur, mais ne lui affichez pas non plus de section vierge et non configurée de l'application la première fois qu'il la lance.

Si vous consultez les dernières mises à jour des applications Google, vous verrez les utilisations appropriées de l’écran de démarrage. Jetez un coup d'œil à l'application YouTube, par exemple.

 enter image description here

11
yathavan

Vous pouvez créer un écran de chargement personnalisé au lieu d'un écran de démarrage. Si vous affichez un écran de démarrage pendant 10 secondes, ce n'est pas une bonne idée pour l'expérience utilisateur. Il est donc préférable d’ajouter un écran de chargement personnalisé. Pour un écran de chargement personnalisé, vous aurez peut-être besoin de quelques images différentes pour que cela ressemble à un gif. Après cela, ajoutez les images dans le dossier res et créez une classe comme celle-ci: -

public class LoadingScreen {private ImageView loading;

LoadingScreen(ImageView loading) {
    this.loading = loading;
}

public void setLoadScreen(){
    final Integer[] loadingImages = {R.mipmap.loading_1, R.mipmap.loading_2, R.mipmap.loading_3, R.mipmap.loading_4};
    final Handler loadingHandler = new Handler();
    Runnable runnable = new Runnable() {
        int loadingImgIndex = 0;
        public void run() {
            loading.setImageResource(loadingImages[loadingImgIndex]);
            loadingImgIndex++;
            if (loadingImgIndex >= loadingImages.length)
                loadingImgIndex = 0;
            loadingHandler.postDelayed(this, 500);
        }
    };
    loadingHandler.postDelayed(runnable, 500);
}}

Dans votre MainActivity, vous pouvez transmettre un élément à la classe LoadingScreen de la manière suivante: -

private ImageView loadingImage;

N'oubliez pas d'ajouter un ImageView dans activity_main . Après cela, appelez la classe LoadingScreen comme ceci;

LoadingScreen loadingscreen = new LoadingScreen(loadingImage);
loadingscreen.setLoadScreen();

J'espère que cela t'aidera

3
Mohammad Julfikar
public class Splash extends Activity {

    private final int SPLASH_DISPLAY_LENGHT = 3000;            //set your time here......

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                /* Create an Intent that will start the Menu-Activity. */
                Intent mainIntent = new Intent(Splash.this,MainActivity.class);
                Splash.this.startActivity(mainIntent);
                Splash.this.finish();
            }
        }, SPLASH_DISPLAY_LENGHT);
    }
}
1
Dhaval Patel

Si l'application ne fait rien pendant ces 10 secondes, cela ne constituera qu'une mauvaise conception, mais obligera l'utilisateur à attendre 10 secondes sans rien faire.

Si quelque chose se passe dans cela, ou si vous souhaitez implémenter un écran de démarrage avec un délai de 10 secondes, voici le code:

ProgressDialog pd;
pd = ProgressDialog.show(this,"Please Wait...", "Loading Application..", false, true);
pd.setCanceledOnTouchOutside(false);
Thread t = new Thread()
{ 
      @Override
      public void run()
      {
                try
                {
                    sleep(10000)  //Delay of 10 seconds
                } 
        catch (Exception e) {}
        handler.sendEmptyMessage(0);
        }
} ;
t.start();

//Handles the thread result of the Backup being executed.
private Handler handler = new Handler()
{
    @Override
    public void handleMessage(Message msg) 
    {
        pd.dismiss();
        //Start the Next Activity here...

    }
};
1
Vedang Jadhav

Écrivez le code:

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread welcomeThread = new Thread() {

            @Override
            public void run() {
                try {
                    super.run();
                    sleep(10000)  //Delay of 10 seconds
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(SplashActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }
0
Rudra