2010-08-14 3 views
3

Dans mon application, j'ai besoin de télécharger un grand nombre d'images pour les données dans un ListView. Je fais un chargement paresseux et ça marche plutôt vite, mais il y a quand même un délai de 1 à 3 secondes avant que la première image n'apparaisse. Ma recherche dans le délai montre que le transfert de données prend 50% du temps. Maintenant, je crois que si je pouvais faire un chargement incrémentiel des images, je serais en mesure d'afficher une demi-image après seulement 75% du délai, ce qui est assez bon. J'utilise Drawable.createFromStream qui utilise en interne BitmapFactory.decodeResourceStream. Mais même s'il prend un flux, il ne peint rien avant que toutes les données ne soient téléchargées et décodées.Chargement incrémental d'images

Connaissez-vous un moyen de charger et de peindre les images de manière incrémentielle avec la librairie Android par défaut? Ou peut-être un bon indépendant?

Screenshot of an ImageDownloader app http://1.bp.blogspot.com/_GTM_W5mVPTU/TETLoIzCOaI/AAAAAAAAAIU/1_u5-WwQT_I/s400/thr.png

+0

Par "incrémental", vous voulez dire qu'il montre une charge d'image partielle pendant le chargement? Je pense que vous auriez besoin d'une bibliothèque externe pour le faire; Je ne peux penser à rien dans la lib Android par défaut pour cela. BitmapFactory.decodeResourceStream() décode le flux entier en bitmap, qui est ensuite converti en bitmapDrawable, ce qui explique pourquoi vous ne voyez pas les images partielles qui l'utilisent. –

+0

Exactement. Similaire à la façon dont les navigateurs chargent les images (pixel) ligne par ligne. –

Répondre

0

Malheureusement, je ne peux pas répondre à la question que vous avez posée. Cependant, est-il possible de peupler avec une vignette de qualité réduite/sous-échantillonnée ou de taille réduite, ou une image factice/de chargement de sorte qu'un espace réservé existe pendant le chargement? Voilà comment je travaille autour de cela dans mon application.

+0

Je suppose que c'est la seule façon accessible pour l'instant. Peut-être que Google va ajouter des API pour le chargement continu de leurs fichiers WebP plus tard. –

0

Pour le téléchargement, vérifiez WebImageView par DroidFu.

+0

Il affiche une belle icône de chargement, mais je ne suis pas sûr que ce soit le chargement incrémentiel? –

+0

@Thomas Ahle: Il vous suffit de pointer vers des widgets déjà créés afin que vous puissiez baser votre code dessus. – Macarse

+0

Ah merci, je vous ai mal compris. Cependant, il semble que WebImageView utilise aussi BitmapFactory.decodeResourceStream. –

Questions connexes