Ich habe den folgenden Code, um ein Bild in Picasso zu laden, wobei ein Zeichen verwendet wird, das der Platzhalter anzeigen kann, während das Bild heruntergeladen wird. Was ich jedoch möchte, ist ein animierter Spinner im Stil eines Fortschrittsbalkens, der sich während des Ladens des Bildes immer wieder animiert, wie ich es in den meisten professionellen Apps sehe. Picasso scheint dies nicht zu unterstützen, nur statische Bildzeichnungen. Gibt es eine Möglichkeit, es mit Picasso zum Laufen zu bringen, oder muss ich etwas anderes tun?
Picasso.with(context).load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.image_download_error)
.into(view);
Ich habe den Fortschrittsdialog bis zum Herunterladen des Bildes implementiert und es ist sehr einfach. Nehmen Sie Ihre ImageView in ein relatives Layout und platzieren Sie den Progress Loader in derselben Bildansicht. Wenden Sie den folgenden Code an und behandeln Sie nur die Sichtbarkeit des Fortschrittsdialogs.
Genießen. :) :)
quelle
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 unterstützt leider keine animierten Platzhalter.
Eine Möglichkeit, dies zu umgehen, besteht darin, Ihre ImageView in einem FrameLayout mit dem animierten Zeichenelement darunter zu platzieren. Auf diese Weise wird Picasso beim Laden des Bildes über den animierten Platzhalter geladen, wodurch der Benutzer den beabsichtigten Effekt erhält.
Alternativ können Sie das Bild in ein Ziel laden . Dann wird standardmäßig der Fortschrittsbalken angezeigt. Wenn die Methode onBitmapLoaded aufgerufen wird, können Sie sie ausblenden und das Bild anzeigen. Eine grundlegende Implementierung hierzu finden Sie hier
quelle
Fügen Sie einfach das Formattribut in die Antwort von DBragion ein, wie unten beschrieben, und es funktioniert wie ein Zauber. Viel Spaß beim Codieren.
Sie können Glide auch verwenden:
quelle
Ich habe eine Antwort auf diese Frage gefunden!
Siehe: https://github.com/square/picasso/issues/427#issuecomment-266276253
Versuchen Sie es zusätzlich zur Antwort von @DBragion unten.
Jetzt können wir Höhe und Breite festlegen!
Ich denke, es gibt zwei wichtige Punkte.
benutze noFade ()
Setzen Sie den scaleType von image_view auf "CENTER_INSIDE".
quelle
Ich habe es so gemacht:
Erstellt ein Drawable (irgendwo im Internet zu finden) und fügt es in das res / drawable ein:
In meinem Artikel für die GridView wurde das ProgressBar-Element hinzugefügt:
In Adapter wurde ein Zielobjekt mit den folgenden Parametern hinzugefügt, wobei Poster und Drehfeld Verweise auf ImageView und ProgressBar sind:
// Ziel, ProgressBar in ImageView ein- / auszublenden
Die Ergebnisse werden beim Laden so aussehen - der Kreis dreht sich (Entschuldigung für diesen Screenshot, aber die Bilder erscheinen zu schnell): Screenshot
quelle
Für alle, die versuchen, die Technik von DBragion zu verwenden: Stellen Sie sicher, dass Sie die neueste Version von Picasso haben, da sie sich sonst nicht dreht. Meins hat nicht funktioniert, bis ich Version 2.5.2 verwendet habe.
quelle
In diesem Link sagte Jake Wharton:
Dann kannst du nicht
quelle
Verwenden Sie einfach Picasso PlaceHolder
quelle