Bild von URL - Dimensionierung und Ausrichtung des Bildschirms Probleme
Ich versuche, ein Bild von einer URL, die möglicherweise größer als der Bildschirm Dimensionen. Ich habe es irgendwie funktioniert, aber ich möchte es zu skalieren, um den Bildschirm passen, und ich habe auch Probleme, wenn die änderungen der Bildschirmausrichtung. Das Bild ist winzig, und ich möchte, dass es bei der Skalierung seiner Breite auf dem Bildschirm als auch. (In beiden Fällen, ich möchte das Bild, um den Bildschirm zu füllen Breite mit Scrollbalken (ggf. für die Höhe).
Hier ist mein Bildansicht:
<ImageView android:id="@+id/ImageView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:adjustViewBounds="true">
</ImageView>
Hier ist der java code, der das Bild lädt: (einige error-handling-code entfernt Einfachheit halber)
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);
Ich habe versucht, verschiedene Einstellungen für android:scaleType. Tut mir Leid, wenn diese Frage gestellt wurde, vor. Ich habe eine Reihe von tutorials zu dem Thema, aber Sie scheinen nicht zu funktionieren für mich. Nicht sicher, ob es hat etwas zu tun mit der Art, wie das Bild geladen wird. (aus dem web, statt eine lokale Ressource)
Weiteres Problem ist, dass manchmal das Bild nicht geladen wurde. Es gibt keine runtime-Fehler bekomme ich nur nichts in der Bildansicht.
Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen oder Klärung.
InformationsquelleAutor RMS2 | 2010-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
sich die Frage nach dem, "manchmal ist das Bild nicht geladen" bezieht sich auf den Kontext, so habe ich diese Funktionen zu lösen, dass Problem
also um den Bildschirm zu füllen Breite mit Ihrem Bild müssen Sie einen code wie diesen
UPDATE::
wenn Sie laden eine große Größe Bild offensichtlich müssen Sie warten, mehr Zeit und download-Probleme verursacht werden könnten für UnknowHostException.
ja du hast Recht, Sie speichern Ihr Bild lokal der lokale Zugriff ist schneller als die download.
um Probleme zu vermeiden auf die rotation ändern, setzen Sie Ihre configChanges="keyboardHidden|orientation" Eigenschaft in Ihrem Manifest.xml
Jetzt, als für das Bild herunterladen nicht, (ich habe Joregsys code) ich bin in alle Arten von Schwierigkeiten. Es scheint, dass, wenn das Bild nicht angezeigt, was Los ist, ich bin immer der Fehler "SkImageDecoder::Factory null zurück", wenn dabei die .createFromStream Methode. Manchmal funktioniert es und manchmal bekomme ich welche. Ich habe versucht, schließen Sie den InputStream der Puffer geleert, aber nicht gehen. Ich habe versucht Verpackung die Zeilen von code in einer while (d==null) Schleife, aber dann bekomme ich nur eine endlose Schleife.
Ich bin auch mit Speicher Probleme, wenn ich drehen Sie den Bildschirm. Wenn das Bild geladen das erste mal, bekomme ich einen Fehler wegen ungenügenden Speicherplatzes bei der Orientierung ändert. Das Bild ist 1 MB groß - klein in Bezug auf ein digitales Foto, aber vielleicht ist es zu groß für Android? Ich glaube, ich bin immer Speicherverluste. Ich habe versucht, Image01.getDrawable().setCallback(null); in der activity onDestroy(), aber das hilft nicht.
Diese Probleme scheinen mit der Bildgröße. Ich habe versucht, mit kleineren Bildern (84k) und hatte überhaupt keine Probleme. Ein 680k Bild ist hit oder miss. Es scheint, je größer die Dateigröße, desto mehr Schwierigkeiten führen. Gibt es etwas ich kann tun, unterschiedlich zu behandeln, die größere Bilder? Sollte ich vor dem speichern das Bild lokal und öffnen Sie es, anstatt nur die Anzeige der stream???
Spät zu posten, aber gerade festgestellt, dass Ihre Lösung, ich hatte dasselbe problem und dein code behoben, prost!!!!
InformationsquelleAutor Elenasys