Je souhaite placer une barre de progression dans la barre de notification. L'idée montre la barre de progression pendant que le programme télécharge un fichier sur un serveur. Tout le reste est correct, mais je n'arrive pas à comprendre comment actualiser la barre de progression dans la notification. Est-ce que quelqu'un connaît un modèle avec lequel jouer? Je veux dire, où je devrais rafraîchir la barre de progression, dans un service ou une activité et ainsi de suite.Actualiser la barre de progression dans la barre de notification
Répondre
Je ne sais pas ce que votre code ressemble, donc je ne sais pas ce que vous devez modifier, Buti a fait des recherches dans la documentation. J'ai trouvé quelques trucs sur Notifications, ProgressBars, et RemoteViews. Plus précisément, dans RemoveView, vous pouvez mettre à jour la barre de progression. Ainsi, en combinant une partie du code d'exemple dans chaque lien, je reçois quelque chose comme ceci:
public class MyActivity extends Activity {
private static final int PROGRESS = 0x1;
private static final int MAX_PROGRESS = 100;
private int mProgressStatus = 0;
private Handler mHandler = new Handler();
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
//define Notification
//...
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
notification.contentView = contentView;
// Start file upload in a background thread
new Thread(new Runnable() {
public void run() {
while (mProgressStatus < MAX_PROGRESS) {
mProgressStatus = doWork();
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
}
});
}
}
}).start();
}
}
devez-vous définir une barre de progression dans votre mise en page xml personnalisée? Ou RemoteViews.setProgressBar() prendra-t-il soin de cela. La raison pour laquelle je demande est parce que http://developer.android.com/reference/android/widget/RemoteViews.html#setProgressBar (int, int, int, boolean) ils disent de donner "L'ID de la vue dont le texte devrait changer " – Pzanno
@Pzanno - Je me demandais exactement la même chose (donc le +1). J'ai trouvé que vous devez définir votre propre barre de progression dans votre mise en page xml personnalisée. – ArtOfWarfare
bon exemple ... j'utilise aussi la barre de progression dans ma vue custome mais ... ça bloque mon système je ne sais pas pourquoi ... tout se passe bien avec la barre de progression des notifications par défaut –
Vous pouvez utiliser des vues personnalisées dans la notification:
https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomExpandedView
Il s'avère que cette réponse est la seule qui a fonctionné pour moi, mais il y a une telle quantité d'informations à lire que vous ne pourriez pas vraiment mettez tout dans une réponse concise. Le lien est à la documentation officielle, si elle change juste mettre à jour le lien. –
Pour supprimer un ProgressBar RemoteView utilisez le code suivant: -
remoteViews.setViewVisibility(R.id.progressBar, View.INVISIBLE);
Vous pouvez également utiliser View.GONE
mais fera Android pour remplir l'espace vide.
Je ne sais pas si c'est possible. Avez-vous essayé avec un gif animé? – Macarse
Pas encore, mais j'ai besoin de montrer en temps réel la progression du téléchargement, donc de toute façon j'ai besoin de mettre à jour la barre de progression. Je pense que l'utilisation d'un gif animé est valide si vous affichez seulement un message de "chargement". Quoi qu'il en soit, merci pour votre temps. – ahmontero
je suis sûr que c'est possible. L'application Market affiche une barre de progression lors du téléchargement et de l'installation des applications dans la barre de notification ... – seanmonstar