2012-11-30 9 views
17

Zastanawiam się, czy istnieje mechanizm do wyświetlania obracającego się "nieokreślonego" paska postępu zamiast obrazu podczas ładowania za pomocą programu Universal Image Loader.Pokaż nieokreślony pasek postępu podczas ładowania obrazu przy użyciu programu Universal Image Loader

W tej chwili używam opcji showStubImage() w DisplayImageOptions, aby wyświetlić obrazek z napisem "Brak obrazu" podczas pobierania obrazu, ale byłby naprawdę zgrabny, gdyby na ekranie pojawił się nieskończony pasek postępu ProgressBar. ImageView podczas pobierania obrazu.

Odpowiedz

54

For reference

final View imageLayout = inflater.inflate(R.layout.item_pager_image, null); 
final ImageView imageView = ... 
final ProgressBar spinner = ... 

imageLoader.displayImage(images[position], imageView, options, new SimpleImageLoadingListener() { 
    @Override 
    public void onLoadingStarted(String imageUri, View view) { 
     spinner.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
     spinner.setVisibility(View.GONE); 
    } 

    @Override 
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
     spinner.setVisibility(View.GONE); 
    } 
}); 
+0

Wygląda dobrze dla mnie, dzięki za szybką odpowiedź! – DiscDev

+0

Dziękuję. Nie używam go, ale dałem mi pomysł, aby użyć paska ActionBar ProgressBar :) –

+2

@NOSTRA link jest 404 –

1

jestem delegowania adaptera sieci kod klasy, który użyłem do pobierania zdjęć z internetu. Musisz zadeklarować układ siatki z jednym imageview i dwoma textviews. Prześlij tablice ciągów do adaptera.

@Override 
public View getView(final int position, View convertView, ViewGroup parent) 
{ 
    // TODO Auto-generated method stub 
    LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(activity.LAYOUT_INFLATER_SERVICE); 
    //LayoutInflater inflator = activity.getLayoutInflater(); 
    if(convertView==null) 
    { 
     view = new ViewHolder(); 
     convertView = inflater.inflate(R.layout.grid_layout, null); 
     view.txtViewTitle = (TextView) convertView.findViewById(R.id.title); 
     view.txtViewSubTitle = (TextView) convertView.findViewById(R.id.subTitle); 
     view.imgViewFlag = (ImageView) convertView.findViewById(R.id.imageView1); 
     convertView.setTag(view); 
    } 
    else 
    { 
     view = (ViewHolder) convertView.getTag(); 
    } 

    view.txtViewTitle.setText(listTitle.get(position)); 
    view.txtViewSubTitle.setText(listSubTitle.get(position)); 

    //For Picasso 
/* Picasso.with(parent.getContext()) 
      .load("http://www.radioarpan.com/upload_images/138630281911.jpg") 
      .placeholder(R.mipmap.paceholder) 
      .error(R.mipmap.error_page_logo) 
      .noFade().resize(125,165) 
      .centerCrop() 
      .into(view.imgViewFlag);*/ 



    ImageLoader imageLoader = ImageLoader.getInstance(); 
    DisplayImageOptions.Builder options = new DisplayImageOptions.Builder().cacheInMemory(true) 
      .cacheOnDisc(true).resetViewBeforeLoading(true) 
      .showImageForEmptyUri(R.mipmap.paceholder) 
      .showImageOnFail(R.mipmap.error_page_logo); 


    final ProgressBar spinner = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall); 
//download and display image from url 
     imageLoader.displayImage("http://www.radioarpan.com/upload_images/138630281911.jpg", view.imgViewFlag,new SimpleImageLoadingListener() 
    { 
     @Override 
     public void onLoadingStarted(String imageUri, View view) 
     { 
      spinner.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onLoadingFailed(String imageUri, View view, FailReason failReason) 
     { 
      spinner.setVisibility(View.GONE); 
     } 

     @Override 
     public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) 
     { 
      spinner.setVisibility(View.GONE); 
     } 
    }); 
+0

Nie mam pojęcia, jak poprawnie umieścić kod tutaj. Przepraszamy za ostatni format wiadomości –