Je souhaite afficher un cercle de progression dans mon application lors du chargement de données. J'ai une activité et je passe d'une activité à une autre. J'analyse des données XML. Par conséquent, jusqu'à ce que l'analyse soit terminée, je souhaite afficher un effet de chargement circulaire.
Vous pouvez utiliser une barre de progression indéterminée pour l'effet de chargement circulaire. Voici comment vous le faites en XML:
<ProgressBar Android:indeterminate="true"
Android:layout_width="50dp" Android:layout_height="50dp"
Android:id="@+id/marker_progress" style="?android:attr/progressBarStyle"
Android:layout_gravity="center_vertical|center_horizontal"/>
Vous pouvez changer la hauteur et la largeur pour que vous soyez. Une fois le chargement terminé, vous pouvez modifier sa visibilité en View.INVISIBLE ou View.GONE.
Vous devez créer un fichier xml d'animation dans le dossier res/anim et appeler startAnimation dans votre ImageView lorsque vous chargez des données et arrêterAnimation lorsque vous cessez de charger des données. Et définissez l'image de chargement sur ImageView, par exemple:
chargement http://bigod26.com/pics/loading.png
Ce code d'identification pour le fichier XML d'animation de cercle
<?xml version="1.0" encoding="UTF-8"?>
<rotate
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fromDegrees="0"
Android:toDegrees="360"
Android:pivotX="50%"
Android:pivotY="50%"
Android:repeatCount="infinite"
Android:duration="1200"
Android:interpolator="@Android:anim/linear_interpolator" />
Insérer ceci entre deux balises View
<ProgressBar Android:id="@+id/loading_spinner"
style="?android:progressBarStyleLarge"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center" />
Pourquoi ne pas utiliser l'interface utilisateur Progressbar
myProgressDialog = ProgressDialog.show(ListingPage.this,"Please Wait", "Loading Date", true);
dan
Utilisez AsyncTask pour le chargement et l'analyse:
/**
* Background task that fetched the content from server and parses the content.
*/
private class BackgroundLoadingTask extends AsyncTask<InputStream, Void, Boolean> {
@Override
protected void onPreExecute() {
// show the progress bar
Activity.this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
Activity.this.requestWindowFeature(Window.PROGRESS_VISIBILITY_ON);
}
@Override
protected Boolean doInBackground(InputStream... params) {
// try to load XML from HTTP server and parse
return true;
}
@Override
protected void onPostExecute(Boolean parsingError) {
// hide the progress bar
Activity.this.requestWindowFeature(Window.PROGRESS_VISIBILITY_OFF);
}
}
Comme dans la boîte de dialogue de progression, utilisez plutôt une animation avec une tâche asynchrone. Rendez-la visible lors de la prexécution et masquez-la à nouveau.
Pour développer un peu la réponse de trgraglia, vous pouvez créer une barre de progression indéterminée (comportement: cycle) et définir la visibilité sur false. Pendant AsyncTask preExecute (), rendez-le visible, et pendant AsyncTask onPostExecute (), revenez à invisible (à condition que vous conserviez la même activité ou le même cas, le cas échéant). Cela élimine le besoin de créer une animation.