J'utilise la bibliothèque Android-Universal-Image-Loader pour charger/mettre en cache des images distantes, et j'ai creusé à travers la source pendant un bon moment pour trouver un moyen de récupérer l'image originale taille (largeur et hauteur) pour mon ImageLoadingListener.Universal Image Loader obtenir la taille de l'image originale
L'exemple de code ci-dessous est juste pour vous donner une idée de ce que j'essaie de faire.
protected class ViaImageLoadingListener implements ImageLoadingListener {
final SelectableImageView selectableImageView ;
protected ViaImageLoadingListener(SelectableImageView selectableImageView) {
this.selectableImageView = selectableImageView;
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
selectableImageView.setImageBitmap(loadedImage);
// loadedImage.getWeight() will not return the original
// dimensions of the image if it has been scaled down
selectableImageView.setOriginalImageSize(width, height);
selectableImageView.invalidate();
}
J'ai essayé étendre la classe ImageDecoder et la classe ImageLoader pour trouver un rond-point moyen de relier le décodeur (dont je peux obtenir la taille de l'image originale dans la méthode #prepareDecodingOptions
) à mon ImageLoadingListener personnalisé. Mais l'objet de configuration est privé et les champs (y compris le décodeur) sont inaccessibles des sous-classes (et se sent comme une manière trop hacky de résoudre le problème de toute façon). Est-ce que j'ai négligé un simple moyen "intégré" d'obtenir la taille de l'image d'origine sans perdre l'avantage de la mise à l'échelle/gestion de la mémoire de l'UIL?
IMAGESIZE et exif sont encore protégées, pas publiques et je suis à l'aide 1.8.6. Et pourquoi créer un nouvel instacne d'ImageFileInfo au retour, qu'est-ce qui pourrait ne pas fonctionner si retourner l'info? – xmen
Il semble que je me trompe. Je publierai v1.8.7-SNAPSHOT avec les changements nécessaires bientôt. – NOSTRA