Próbuję wyświetlić obraz z adresu URL, który może być większy niż wymiary ekranu. Mam to działa, ale chciałbym, żeby to skalowało się tak, aby pasowało do ekranu, a także mam problemy, gdy zmienia się orientacja ekranu. Obraz jest malutki i chciałbym, aby przeskalował jego szerokość również do ekranu. (W obu przypadkach, chciałbym obraz, aby wypełnić szerokość ekranu z pasków przewijania (jeżeli jest to konieczne dla wysokości)Wyświetl obraz z adresu URL - problemy z wielkością i orientacją ekranu
Oto moja ImageView.
<ImageView android:id="@+id/ImageView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:adjustViewBounds="true">
</ImageView>
Oto kod Java, który ładuje obraz: (niektóre kod obsługi błędów usunięte dla uproszczenia)
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);
próbowałem różnych ustawień dla Androida.. scaleType Przepraszam, jeśli kwestia ta została wezwana przed Poszedłem poprzez szereg tutoriali na ten temat , ale nie wydają się działać dla mnie. Nie jestem pewien, czy coś ma g do zrobienia ze sposobem załadowania obrazu. (z sieci zamiast lokalnego zasobu)
Inną kwestią jest to, że czasami obraz się nie ładuje. Nie ma błędów runtime, po prostu nie dostaję nic w ImageView.
Proszę dać mi znać, jeśli potrzebujesz więcej informacji lub wyjaśnień.
Dzięki za pomoc z minimalną i maksymalną szerokość. To wystarczyło, chociaż musiałem umieścić ImageView wewnątrz ScrollView, jeśli ustawienie szerokości spowodowało, że obraz przekroczył dostępną wysokość. – RMS2
Teraz, jeśli chodzi o obraz, który nie jest pobierany, (użyłem kodu Joregsysa), wpadam w różnego rodzaju kłopoty. Wydaje się, że gdy obraz nie jest wyświetlany, to co się dzieje, to otrzymuję komunikat "SkImageDecoder :: Factory zwrócił wartość null" podczas wykonywania metody .createFromStream. Czasami to działa, a czasami to rozumiem. Próbowałem już zamknąć InputStream, aby opróżnić bufor, ale nie ma go. Próbowałem owijać te linie kodu przez chwilę (d == null), ale potem dostaję nieskończoną pętlę. – RMS2
Mam również problemy z pamięcią podczas obracania ekranu. Jeśli obraz zostanie wczytany po raz pierwszy, otrzymam komunikat OutOfMemoryError po zmianie orientacji. Obraz ma rozmiar 1 MB - mały pod względem fotografii cyfrowej, ale może jest zbyt duży dla Androida? Myślę, że dostaję przecieki pamięci. Próbowałem Image01.getDrawable(). SetCallback (null); w działaniu onDestroy(), ale to nie pomaga. – RMS2