Naprawdę nie powinieneś tego używać, ponieważ blokuje wątek interfejsu użytkownika. Ta biblioteka zajmie się wątkami
koush
16
Nie, jeśli uruchomisz ten blok w osobnym wątku bez setImageBitmap
Jonathan
jego działa wyświetlam w miniaturach i onclick imageview Użyłem dsplaying dailog, ale otwiera się po 10 sekundach
Prasad
4
@koush - ten kod byłby w porządku, gdyby był opakowany w plik AsyncTask.
Greg Brown
2
Wszelkie operacje sieciowe należy wykonywać w osobnym wątku. Po załadowaniu mapy bitowej można użyć funkcji ImageView.post () lub Handler.post ()
Volodymyr Shalashenko
311
Przyjęta powyżej odpowiedź jest świetna, jeśli ładujesz obraz na podstawie kliknięcia przycisku, jednak jeśli robisz to w ramach nowej czynności, zawiesza interfejs użytkownika na sekundę lub dwie. Rozglądając się wokół stwierdziłem, że proste asynchroniczne zadanie wyeliminowało ten problem.
Aby użyć zadania asynchronicznego w celu dodania tej klasy na koniec działania:
Podoba mi się to rozwiązanie, powinieneś po prostu wyczyścić kod dla onPostExecute, ponieważ jego treść jest niedostępna.
Sofija,
to jest świetne. @Sofija co miałeś na myśli mówiąc o sprzątaniu? co jeśli masz nieznaną liczbę zdjęć?
5er
@ 5er W oryginalnej odpowiedzi niektóre nawiasy nie pasowały. Od tego czasu wyczyściłem go, więc powinieneś móc go używać tak, jak jest.
Kyle Clegg
Nie zapominajmy, że musimy również dodać uprawnienia w manifeście: <uses-Permissions android: name = "android.permission.INTERNET" />
mike20132013
1
Jest to świetne rozwiązanie do nauki / hakowania (uznanie), ale do każdej produkcji powinieneś użyć biblioteki Imageloader, jest ich tak wiele. Moim ulubionym jest Universal Image loader, Picasso itp.
AmeyaB
31
spróbuj picasssoładnie i kończy się jednym stwierdzeniem
Picasso, Glide też są moimi ulubionymi. Oświadczenie Glide jest dość podobne do Picassa, ze znaczną poprawą rozmiaru pamięci podręcznej.
anhtuannd
1
To powinna być nowa odpowiedź, chociaż zawsze dobrze jest wiedzieć, jak to zrobić samodzielnie. Świetny artykuł wyjaśniający obie strony: medium.com/@crossphd/…
UrlImageViewHelper wypełni ImageView obrazem znalezionym pod adresem URL. UrlImageViewHelper automatycznie pobierze, zapisze i buforuje wszystkie adresy URL obrazów BitmapDrawables. Zduplikowane adresy URL nie zostaną dwukrotnie załadowane do pamięci. Pamięć bitmap jest zarządzana przy użyciu słabej referencyjnej tabeli skrótów, więc gdy tylko obraz nie jest już używany, zostanie automatycznie usunięty.
1) Korzystanie z biblioteki Glide Jest to najlepszy sposób na załadowanie obrazu z adresu URL, ponieważ przy próbie wyświetlenia tego samego adresu URL po raz drugi wyświetli się on po przechwyceniu, więc popraw wydajność aplikacji
Odpowiedzi:
źródło
AsyncTask
.Przyjęta powyżej odpowiedź jest świetna, jeśli ładujesz obraz na podstawie kliknięcia przycisku, jednak jeśli robisz to w ramach nowej czynności, zawiesza interfejs użytkownika na sekundę lub dwie. Rozglądając się wokół stwierdziłem, że proste asynchroniczne zadanie wyeliminowało ten problem.
Aby użyć zadania asynchronicznego w celu dodania tej klasy na koniec działania:
I wywołaj z metody onCreate () używając:
Nie zapomnij dodać poniższych uprawnień w pliku manifestu
U mnie działa świetnie. :)
źródło
spróbuj
picassso
ładnie i kończy się jednym stwierdzeniemsamouczek: https://youtu.be/DxRqxsEPc2s
źródło
Spróbuj tego dodać plik jar picasso lib
źródło
w swojej aktywności weź imageview i ustaw zasób imageDownload (url, yourImageview);
źródło
UrlImageViewHelper wypełni ImageView obrazem znalezionym pod adresem URL. UrlImageViewHelper automatycznie pobierze, zapisze i buforuje wszystkie adresy URL obrazów BitmapDrawables. Zduplikowane adresy URL nie zostaną dwukrotnie załadowane do pamięci. Pamięć bitmap jest zarządzana przy użyciu słabej referencyjnej tabeli skrótów, więc gdy tylko obraz nie jest już używany, zostanie automatycznie usunięty.
UrlImageViewHelper.setUrlDrawable (imageView, "http://example.com/image.png");
https://github.com/koush/UrlImageViewHelper
źródło
Na podstawie tej odpowiedzi piszę własny loader.
Z efektem ładowania i efektem wyglądu:
Dodaj uprawnienia
I wykonaj:
źródło
Oto przykładowy kod do wyświetlania obrazu z adresu URL.
źródło
Najlepsza metoda, którą wypróbowałem zamiast używać jakichkolwiek bibliotek
źródło
dodaj pozwolenie internetowe w manifeście
niż stworzyć metodę jak poniżej,
teraz dodaj to do swojej metody onCreate,
to działa dla mnie.
źródło
Poniższy kod pokazuje, jak ustawić ImageView na podstawie ciągu adresu URL, używając RxAndroid. Najpierw dodaj bibliotekę RxAndroid 2.0
teraz użyj setImageFromUrl do ustawienia obrazu.
źródło
Istnieją dwa sposoby:
1) Korzystanie z biblioteki Glide Jest to najlepszy sposób na załadowanie obrazu z adresu URL, ponieważ przy próbie wyświetlenia tego samego adresu URL po raz drugi wyświetli się on po przechwyceniu, więc popraw wydajność aplikacji
zależność:
implementation 'com.github.bumptech.glide:glide:4.10.0'
2) Korzystanie z usługi Stream. Tutaj chcesz utworzyć bitmapę z obrazu url
źródło
Proszę bardzo
źródło
ivdpfirst
?Spróbuj tego:
źródło
źródło
Dla mnie Fresco jest najlepsza spośród innych bibliotek.
Po prostu skonfiguruj Fresco, a następnie po prostu ustaw imageURI w następujący sposób:
Zapoznaj się z tą odpowiedzią wyjaśniającą niektóre zalety Fresco.
źródło