Показывать прогресс при загрузке изображения с сервера в 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 3

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);