Saya memiliki kode berikut untuk memuat gambar di Picasso, menggunakan drawable untuk menampilkan placeholder saat gambar sedang diunduh. Yang saya inginkan adalah animasi spinning progress bar style spinner yang menganimasikan sekitar dan saat gambar sedang dimuat, seperti yang saya lihat di sebagian besar aplikasi profesional. Picasso tampaknya tidak mendukung ini, hanya gambar statis yang dapat digambar. Adakah cara untuk membuatnya berfungsi dengan Picasso atau apakah saya harus melakukan sesuatu yang berbeda?
Picasso.with(context).load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.image_download_error)
.into(view);
Saya menerapkan dialog kemajuan hingga pengunduhan gambar dan itu sangat sederhana. Ambil ImageView Anda dalam tata letak relatif dan tempatkan pemuat kemajuan pada tampilan gambar yang sama. Terapkan kode di bawah ini dan tangani visibilitas dialog kemajuan saja.
Nikmati. :)
sumber
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 tidak mendukung placeholder animasi, sayangnya.
Salah satu cara Anda bisa mengatasi ini adalah dengan menempatkan ImageView Anda di FrameLayout dengan drawable animasi di bawahnya. Dengan cara ini, ketika Picasso memuat gambar, gambar itu akan dimuat di atas placeholder animasi, memberikan efek yang diinginkan pengguna.
Atau, Anda dapat memuat gambar ke dalam Target . Kemudian Anda akan memiliki bilah kemajuan yang ditampilkan secara default, dan ketika metode onBitmapLoaded dipanggil Anda dapat menyembunyikannya dan menampilkan gambar. Anda dapat melihat implementasi dasar ini di sini
sumber
Cukup tambahkan atribut bentuk dalam jawaban DBragion seperti di bawah ini dan itu akan bekerja seperti pesona. Selamat membuat kode.
Anda juga dapat menggunakan Glide:
sumber
Saya menemukan jawaban untuk pertanyaan ini!
Lihat: https://github.com/square/picasso/issues/427#issuecomment-266276253
Selain jawaban @DBragion, coba di bawah ini.
Sekarang kita bisa memperbaiki tinggi dan lebar!
Saya pikir ada dua poin penting.
gunakan noFade ()
setel image_view's scaleType ke "CENTER_INSIDE"
sumber
Saya membuatnya bekerja dengan cara berikut:
Membuat drawable (ditemukan di suatu tempat di Internet) dan meletakkannya di res / drawable:
Dalam item saya untuk GridView menambahkan elemen ProgressBar:
Di Adapter menambahkan Objek Target dengan parameter berikut, di mana poster dan spinner adalah referensi ke ImageView dan ProgressBar:
// Targetkan untuk menampilkan / menyembunyikan ProgressBar di ImageView
Hasil akan seperti itu saat dimuat - lingkaran berputar (maaf untuk tangkapan layar ini, tetapi gambar muncul terlalu cepat): ScreenShot
sumber
Untuk siapa pun yang mencoba menggunakan teknik DBragion: Pastikan Anda memiliki Picasso versi terbaru atau Picasso tidak akan berputar. Milik saya tidak berfungsi sampai saya menggunakan versi 2.5.2.
sumber
Di tautan ini , Jake Wharton berkata:
Maka Anda tidak bisa
sumber
Cukup gunakan Picasso PlaceHolder
sumber