Pierre87 Posté(e) 4 février 2010 Share Posté(e) 4 février 2010 Bonjour, Dans mon application, j'ai besoin de rafraichir une ImageView de temps en temps (à la demande de l'utilisateur). Mon ImageView est basée sur une Bitmap, en utilisant setBitmap. L'actualisation de l'ImageView se fait en recevant une nouvelle Bitmap de la taille de l'ImageView (on écrase tout) J'ai pensé à 2 manières de rafraichir mon ImageView : Actualiser la Bitmap actuelle, en utilisant les données de la nouvelle Bitmap, puis rafraichir la View update.getPixels(this.pixels, 0, width, 0, 0, width, height); this.bitmap.setPixels(this.pixels, 0, width, 0, 0, width, height); this.postInvalidate(0, 0, width, height); update.recycle(); Remplacer la Bitmap précédente de l'ImageView par la nouvelle Bitmap, en utilisant setBitmap. Laquelle de ces 2 méthodes vous semble la plus pertinente ? Moi je penche pour la 2eme, mais elle demande à être faite dans le thread graphique ... Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 4 février 2010 Share Posté(e) 4 février 2010 Moi je penche pour la 2eme, mais elle demande à être faite dans le thread graphique ... Merci Si c'est ce qui te gêne, tu peux en faire une asyncTask. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 4 février 2010 Auteur Share Posté(e) 4 février 2010 C'etait surtout une question de performance. J'ai fait quelques tests, et il semble que la 2eme soit plus efficace, puisqu'elle prend 0 ms ! Mais je dois mal m'y prendre :p Pour le thread graphique, je pensais utiliser la méthode post(Runnable) de View Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 4 février 2010 Share Posté(e) 4 février 2010 Ta première méthode manipule "un par un" (plus ou moins) les pixels de ton image pour faire une copie. La seconde ne fait qu'affecter des référence d'objets. Cette seconde sera forcément plus rapide. Reste à bien gérer la libération de l'ancienne Bitmap pour ne pas se retrouver avec des saturations mémoire (mais tu as l'air déjà familier du .recycle() alors ca devrait aller). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 4 février 2010 Auteur Share Posté(e) 4 février 2010 Ha ouais ! Je ne l'avais pas vu comme ça ! Je ne savais pas ce qui était fait derrière setImageBitmap() Merci beaucoup ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 4 février 2010 Auteur Share Posté(e) 4 février 2010 Qu'est ce qui se passe quand une View (ImageView dans mon cas) est détruite ? Je veux parler de la Bitmap associée. Est ce que je dois la recycler manuellement ? Si oui, comment détecter dans ma View, que celle ci est détruite ? Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 4 février 2010 Auteur Share Posté(e) 4 février 2010 Suis-je bête ! C'était sous mes yeux ! onDetachedFromWindow() Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.