161 votes

La meilleure façon de montrer un chargement spinner?

Quelle est la meilleure façon de montrer un chargement spinner, tandis que l'application est en attente d'une réponse du serveur?

Cela peut être fait par programmation? De sorte que je n'ai pas à ajouter de la charge spinner dans le fichier xml?

303voto

Suraj Bajaj Points 2423
ProgressDialog progress = new ProgressDialog(this);
progress.setTitle("Loading");
progress.setMessage("Wait while loading...");
progress.show();
// To dismiss the dialog
progress.dismiss();

OU

ProgressDialog.show(this, "Loading", "Wait while loading...");

En lire plus ici.

Par la voie, Spinner a un sens différent dans Android. (C'est comme l'sélectionnez le menu déroulant en HTML)

16voto

vasart Points 3417

Utiliser ProgressDialog

ProgressDialog.show(Context context, CharSequence title, CharSequence message);

enter image description here

Toutefois, cela est considéré comme un anti-modèle aujourd'hui (2013): http://www.youtube.com/watch?v=pEGWcMTxs3I

10voto

quinestor Points 587

En fait, si vous êtes en attente de réponse d'un serveur, il doit être fait par programmation. Vous pouvez créer une boîte de dialogue de progression et de le rejeter, mais là encore ce n'est pas "android".

Actuellement, la méthode recommandée est d'utiliser un DialogFragment :

public class MySpinnerDialog extends DialogFragment {

    public MySpinnerDialog() {
        // use empty constructors. If something is needed use onCreate's
    }

    @Override
    public Dialog onCreateDialog(final Bundle savedInstanceState) {

        _dialog = new ProgressDialog(getActivity());
        this.setStyle(STYLE_NO_TITLE, getTheme()); // You can use styles or inflate a view
        _dialog.setMessage("Spinning.."); // set your messages if not inflated from XML

        dlgAlert.setCancelable(false);  

        return _dialog;
    }
}

Ensuite, dans votre activité, vous définissez votre Fragment de gestionnaire et d' afficher la boîte de dialogue une fois le temps d'attente pour le serveur:

FragmentManager fm = getSupportFragmentManager();
MySpinnerDialog myInstance = new MySpinnerDialog();
}
myInstance.show(fm, "some_tag");

Une fois que votre serveur a répondu complet vous sera rejetée:

myInstance.dismiss()

Rappelez-vous que le progressdialog est une toupie ou d'une barre de progression en fonction des attributs, pour en savoir plus sur l' api guide

6voto

Isaac Zais Points 173

Voilà comment j'ai fait ce donc qu'une seule boîte de dialogue de progression peuvent être ouvertes en même temps. Basé sur la réponse de Suraj Bajaj

private ProgressDialog progress;



public void showLoadingDialog() {

    if (progress == null) {
        progress = new ProgressDialog(this);
        progress.setTitle(getString(R.string.loading_title));
        progress.setMessage(getString(R.string.loading_message));
    }
    progress.show();
}

public void dismissLoadingDialog() {

    if (progress != null && progress.isShowing()) {
        progress.dismiss();
    }
}

J'ai également eu à utiliser

protected void onResume() {
    dismissLoadingDialog();
    super.onResume();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X