J'utilise actuellement dans mon application une liste qui nécessite peut-être une seconde pour s'afficher.
Ce que je fais actuellement, c'est utiliser la propriété @ id / android: empty de la listview pour créer un texte de "chargement".
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="Loading..."/>
Maintenant, je voudrais remplacer cela par le cercle animé qui est utilisé dans une boîte de dialogue de chargement au lieu de ce texte, je suppose que vous savez tous ce que je veux dire:
Edit: je ne veux pas de dialogue. Je veux montrer cela dans ma mise en page.
Merci beaucoup pour votre aide!
android
loading
android-asynctask
geometry
Waza_Be
la source
la source
Vous pouvez le faire en utilisant le xml suivant
Avec ce style
Pour l'utiliser, vous devez masquer vos éléments d'interface utilisateur en définissant la valeur de visibilité sur GONE et chaque fois que les données sont chargées, appelez
setVisibility(View.VISIBLE)
toutes vos vues pour les restaurer. N'oubliez pas d'appelerfindViewById(R.id.loadingPanel).setVisiblity(View.GONE)
pour masquer l'animation de chargement.Si vous n'avez pas d'événement / fonction de chargement mais que vous souhaitez simplement que le panneau de chargement disparaisse après x secondes, utilisez une poignée pour déclencher le masquage / affichage.
la source
findViewById(...).setVisibility(View.GONE)
ligne lorsque je fais pivoter l'écran. Fonctionne comme un charme dans une seule orientation, mais une idée de pourquoi cela pourrait se briser?findViewById(R.id.loadingPanel).setVisiblity(View.GONE)
dans la deuxième activité? Il ne peut pas trouver leview
puisqu'il n'y a pas desetContnetView()
méthode dans l'activité du 2e fragment. Merci!Ceci est généralement appelé une barre de progression indéterminée progression indéterminée ou d'une boîte de dialogue de progression indéterminée.
Combinez cela avec un thread et un gestionnaire pour obtenir exactement ce que vous voulez. Il existe un certain nombre d'exemples sur la façon de le faire via Google ou ici sur SO. Je recommanderais fortement de passer du temps à apprendre à utiliser cette combinaison de classes pour effectuer une tâche comme celle-ci. Il est incroyablement utile dans de nombreux types d'applications et vous donnera un excellent aperçu de la façon dont les threads et les gestionnaires peuvent fonctionner ensemble.
Je vais vous expliquer comment cela fonctionne:
L'événement de chargement ouvre la boîte de dialogue:
Maintenant, le thread fait le travail:
Enfin récupérez l'état du thread lorsqu'il est terminé:
la source
Si vous ne souhaitez pas gonfler une autre vue uniquement pour indiquer les progrès, procédez comme suit:
Android veillera à la visibilité de la barre de progression.
Par exemple, dans
activity_main.xml
:Et dans
MainActivity.java
:}
la source
Vous pouvez utiliser ce code à partir d' exemples de github Firebase .
Vous n'avez pas besoin de modifier les fichiers de mise en page ... créez simplement une nouvelle classe "BaseActivity"
Dans votre activité que vous souhaitez utiliser la boîte de dialogue de progression.
Avant / Après la fonction qui prend du temps
la source
Pour ceux qui développent dans Kotlin, il existe une méthode douce fournie par la bibliothèque Anko qui rend le processus d'affichage
ProgressDialog
un jeu d'enfant!Sur la base de ce lien:
Cela affichera une boîte de dialogue de progression avec le% de progression affiché (pour lequel vous devez passer le
init
paramètre pour calculer la progression).Il existe également la
indeterminateProgressDialog()
méthode, qui fournit l'animation Spinning Circle indéfiniment jusqu'à son rejet:Merci à ce blog qui m'a conduit à cette solution.
la source