Показывать прогресс при загрузке изображения с сервера в imageview
Я ListView и хотел бы показать прогресс, пока изображение не загружено с сервера в ImageView с помощью библиотеки Picasso, все еще показывая ic_launcher drawable при загрузке изображения с сервера в ImageView, но что, если я хотел бы показать прогресс
Picasso.with(context)
.load(imageURL)
.transform(transformation)
.placeholder(R.drawable.ic_launcher)
.error(R.drawable.ic_launcher)
.into(viewHolder.imageView);
5 ответов:
В вашем xml-файле вы должны поместить progressbar над изображением, установить видимость progressbar visible и в вашем коде
Picasso.with(context) .load(file) .into(imageView, new Callback() { @Override public void onSuccess() { progressbar.setVisibility(View.GONE); } });
Когда изображение загружается, Вы должны установить видимость(вид.Ушел) в progressbar
В прошедшем саммите разработчиков Google в Таиланде Google представила нам библиотеку загрузчика изображений для Android, разработанную компанией bumptech под названием Glide, как библиотеку, рекомендованную Google. До сих пор он использовался во многих проектах Google с открытым исходным кодом, включая официальное приложение Google I/O 2014.
Это заставило меня заинтересоваться. Я провел целую ночь, играя с ним,и решил поделиться своим опытом в этом блоге. В качестве начала, я должен сказать, что он выглядит на 90% похожим на Пикассо. Точнее, я думаю, что это что-то вроде Пикассо-клона.
Во всяком случае, в деталях это совсем другое. Вы узнаете, как это делается.
Http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en
Добавьте ProgressBar в XML-файл, где вы разместили ImageView, или сделайте это программно. Тогда вы могли бы сделать:
ProgressBar progressBar ; //initialize it as you dud with the imageView progressBar.setVisibility(View.VISIBLE); Picasso.with(context) .load(imageURL) .transform(transformation) .placeholder(R.drawable.ic_launcher) .error(R.drawable.ic_launcher) .into(viewHolder.imageView, new Callback() { @Override public void onSuccess() { progressBar.setVisibility(View.GONE); } @Override public void onError() { } });
mProgressDialog = new ProgressDialog(getActivity()); mProgressDialog.setMessage("Wait a moment, loading image..."); mProgressDialog.setCanceledOnTouchOutside(false); mProgressDialog.setCancelable(false); mProgressDialog.show(); Picasso.with(getActivity()).load(mImagePath).into(mImageView, new Callback() { @Override public void onSuccess() { mProgressDialog.dismiss(); } @Override public void onError() { mProgressDialog.dismiss(); Toast.makeText(getActivity(), "Download failed", Toast.LENGTH_LONG).show(); } });
Я думаю, что вы можете использовать целевой класс Пикассо
Target t = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { //hideProgress } @Override public void onBitmapFailed(Drawable errorDrawable) { //hideProgress } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { //lshow Progress } }; Picasso.with(context) .load(strImage) .transform(transformation) .placeholder(R.drawable.nothing_found) .error(R.drawable.nothing_found) .into(t);