9
votes

Unité de progression dans ProgressDialog

android's ProgressDialog vous permet de définir la progression actuelle et la valeur maximale comme des entiers. Ces valeurs sont affichées dans la boîte de dialogue comme celle-ci:

3401/10023

où le premier numéro est la progression actuelle et que le deuxième numéro est la valeur maximale.

Je voudrais également montrer l'unité de mesure. Quelque chose comme ceci:

3401/10023 KB

est-ce possible avec ProgressDialog? Sinon, que recommandez-vous de faire cette information à l'utilisateur? J'essaie d'éviter de réimplémenter ProgressDialog Juste pour inclure l'unité.


3 commentaires

Pourquoi ne le faites-vous pas en pourcentages? Comme 30/100


La boîte de dialogue de progression indique déjà le pourcentage. Mais dans un fichier, téléchargez la boîte de dialogue de progression, je pense que c'est plus amical pour l'utilisateur de montrer la progression des octets, spécialement si c'est un fichier volumineux.


Si vous envisagez de rechercher des sources de progressionDialog, le texte est traité par un gestionnaire créé dans la méthode Oncreate. Voir ma prochaine réponse


4 Réponses :


5
votes

Dans le fichier source ProgressDialog: XXX

Vous devez le réimplémenter, vous ne pouvez pas l'éviter


0 commentaires

6
votes

mise à jour: setProgressNumberFormat fait partie de l'API depuis le niveau 11.

Le Head du code source Le code source comprend déjà une fonction publique appelée setProgressnumberformat qui peut être utilisé pour définir l'unité . Malheureusement, cette fonction ne semble pas être disponible dans la dernière version Android. Je suppose que cela sera inclus dans une mise à jour future.

Entre-temps, copier cette implémentation de ProgressDialog est la meilleure option. Sous-classement ProgressDialog est d'aucune utilité car tous ses membres sont privés et travaillant avec View.findviewyID (r.id.progress_number) pour obtenir le textview directement est extrêmement risqué, car rien ne garantit que l'ID sera toujours le même (ou que le textview existe toujours).


2 commentaires

Oui, mais au moins 2.3 pour le setProgressNumberFormat. Le Findviewide n'est pas recommandé du tout, rien ne vous dit que toute version réelle ou future a le même identifiant


D'accord. En fait, j'ai mentionné ces possibilités de décourager leur utilisation, mais je vais le rendre plus clair.



3
votes

Ce n'était pas évident pour moi que je ne peux que définir:

mProgressDialog.setMessage("Downloading...(size in kB)");


0 commentaires

5
votes

À partir de l'API 11, vous pouvez appeler la fonction suivante pour atteindre votre objectif.

mProgressDialog.setProgressNumberFormat("%1d/%2d kB") 


0 commentaires