Mam następujący kod, aby załadować obraz w Picassie, używając elementu rysunkowego dla symbolu zastępczego do wyświetlenia podczas pobierania obrazu. Chcę jednak animowanego obracającego się pokrętła w stylu paska postępu, który animuje dookoła i dookoła podczas ładowania obrazu, tak jak w większości profesjonalnych aplikacji. Picasso nie wydaje się wspierać tego, tylko statyczne obrazy do rysowania. Czy istnieje sposób, aby to zadziałało z Picassem, czy też muszę zrobić coś innego?
Picasso.with(context).load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.image_download_error)
.into(view);
Zaimplementowałem okno dialogowe postępu do momentu pobrania obrazu i jest bardzo proste. Weź swój ImageView we względnym układzie i umieść program ładujący postęp w tym samym widoku obrazu. Zastosuj poniższy kod i obsłuż tylko widoczność okna dialogowego postępu.
Cieszyć się. :)
źródło
final Callback loadedCallback = new Callback() { @Override public void onSuccess() { // your code } @Override public void onError() { // your code } }; imageView.setTag(loadedCallback); Picasso.with(context).load(url).into(imageView, loadedCallback);
Picasso nie obsługuje niestety animowanych symboli zastępczych.
Jednym ze sposobów obejścia tego jest umieszczenie ImageView w FrameLayout z animowanym rysunkiem pod spodem. W ten sposób, gdy Picasso wczytuje obraz, załaduje się on nad animowanym elementem zastępczym, dając użytkownikowi zamierzony efekt.
Alternatywnie możesz załadować obraz do elementu docelowego . Wtedy pasek postępu byłby wyświetlany domyślnie, a gdy wywoływana jest metoda onBitmapLoaded, można ją ukryć i wyświetlić obraz. Widać podstawową realizację tego tutaj
źródło
Po prostu dodaj atrybut kształtu w odpowiedzi DBragion, jak poniżej, a będzie działać jak urok. Miłego kodowania.
Możesz także użyć Glide:
źródło
Znalazłem odpowiedź na to pytanie!
Zobacz: https://github.com/square/picasso/issues/427#issuecomment-266276253
Oprócz odpowiedzi @DBragion spróbuj poniżej.
Teraz możemy ustalić wysokość i szerokość!
Myślę, że są dwie kluczowe kwestie.
użyj noFade ()
ustaw scaleType image_view na „CENTER_INSIDE”
źródło
Zrobiłem to działało w następujący sposób:
Stworzyłem drawable (znalezione gdzieś w Internecie) i umieściłem go w res / drawable:
W moim elemencie dla GridView dodano element ProgressBar:
W Adapterze dodano Target Object z następującymi parametrami, gdzie poster i spinner są odniesieniami do ImageView i ProgressBar:
// Cel, aby pokazać / ukryć ProgressBar w ImageView
Wyniki będą takie podczas ładowania - kółko się obraca (przepraszam za ten zrzut ekranu, ale obrazy pojawiają się zbyt szybko): ScreenShot
źródło
Dla każdego, kto próbuje użyć techniki DBragion: Upewnij się, że masz najnowszą wersję Picassa, inaczej nie będzie się kręcić. Mój nie działał, dopóki nie użyłem wersji 2.5.2.
źródło
W tym linku Jake Wharton powiedział:
Wtedy nie możesz
źródło
Po prostu użyj Picasso PlaceHolder
źródło