Affichage de l'image à partir de l'URL de la taille et de l'orientation de l'écran de problèmes

StackOverflow https://stackoverflow.com/questions/3601775

Question

J'essaie d'afficher une image à partir d'une URL, qui peut être plus grande que les dimensions de l'écran.J'ai ce genre de travail, mais je tiens à ajuster à la taille de l'écran, et j'ai aussi des problèmes lors de l'orientation de l'écran change.L'image est minuscule, et je tiens à l'échelle de la largeur de l'écran.(Dans les deux cas, je voudrais l'image pour remplir la largeur de l'écran avec des barres de défilement (si nécessaire pour la hauteur).

Voici mon ImageView:

<ImageView android:id="@+id/ImageView01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true">
</ImageView>

Voici le code java qui charge l'image:(certains code de gestion d'erreur supprimé pour des raisons de simplicité)

    Object content = null;
    try{
      URL url = new URL("http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg");
      content = url.getContent();
    }
      catch(Exception ex)
    {
        ex.printStackTrace();
    }
    InputStream is = (InputStream)content;
    Drawable image = Drawable.createFromStream(is, "src");
    Image01.setImageDrawable(image);

J'ai essayé différents réglages pour android:scaleType.Je suis désolé si cette question a été posée avant.Je suis passé par un certain nombre de tutoriels sur le sujet, mais ils ne semblent pas fonctionner pour moi.Vous ne savez pas si il a quelque chose à voir avec la façon dont l'image est chargée.(à partir du web au lieu d'une ressource locale)

Un autre problème est que, parfois, l'image ne prend même pas en charge.Il n'y a pas d'erreurs d'exécution, je viens d'obtenir rien dans l'ImageView.

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations ou de précisions.

Était-ce utile?

La solution

le problème à propos que "parfois, l'image ne prend même pas en charge" est liée au contexte, alors j'ai utilisé cette fonction pour résoudre ce problème

public Object fetch(String address) throws MalformedURLException,
    IOException {
        URL url = new URL(address);
        Object content = url.getContent();
        return content;
    }  

    private Drawable ImageOperations(Context ctx, String url) {
        try {
            InputStream is = (InputStream) this.fetch(url);
            Drawable d = Drawable.createFromStream(is, "src");
            return d;
        } catch (MalformedURLException e) {
            return null;
        } catch (IOException e) {
            return null;
        }
    }

donc, pour remplir la largeur de l'écran avec votre image, vous devez avoir un code comme ceci

    try{
        String url = "http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg";           
        Drawable image =ImageOperations(this,url);
        Image01.setImageDrawable(image);
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }


    Image01.setMinimumWidth(width);
    Image01.setMinimumHeight(height);

    Image01.setMaxWidth(width);
    Image01.setMaxHeight(height);

Mise à JOUR::si vous chargez une grande taille d'image, évidemment, vous devrez attendre plus de temps, et des problèmes de téléchargement pourrait être causé par UnknowHostException.

oui, vous avez raison vous permettra de sauvegarder vos images sur place, l'accès local est plus rapide que le téléchargement.

pour éviter les problèmes lors de la rotation de changement de votre configChanges="keyboardHidden|orientation" à l'intérieur de votre propriété Manifest.xml

<activity android:name=".myActivity"
...
         android:configChanges="keyboardHidden|orientation"   >
...
/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top