Pierre87 Posted February 4, 2010 Share Posted February 4, 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 Quote Link to comment Share on other sites More sharing options...
dekans Posted February 4, 2010 Share Posted February 4, 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. Quote Link to comment Share on other sites More sharing options...
Pierre87 Posted February 4, 2010 Author Share Posted February 4, 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 Quote Link to comment Share on other sites More sharing options...
Nivek Posted February 4, 2010 Share Posted February 4, 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). Quote Link to comment Share on other sites More sharing options...
Pierre87 Posted February 4, 2010 Author Share Posted February 4, 2010 Ha ouais ! Je ne l'avais pas vu comme ça ! Je ne savais pas ce qui était fait derrière setImageBitmap() Merci beaucoup ! Quote Link to comment Share on other sites More sharing options...
Pierre87 Posted February 4, 2010 Author Share Posted February 4, 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 Quote Link to comment Share on other sites More sharing options...
Pierre87 Posted February 4, 2010 Author Share Posted February 4, 2010 Suis-je bête ! C'était sous mes yeux ! onDetachedFromWindow() Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.