Hi,
         I am using lazy list example i.e., image loader class. but
the progress bar is not showing..

package com.self
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;

import com.self.R;

public class ImageLoader {

        MemoryCache memoryCache = new MemoryCache();
        FileCache fileCache;
        private Map<ImageView, String> imageViews =
Collections.synchronizedMap(new WeakHashMap<ImageView, String>());
        ExecutorService executorService;
        ProgressBar progDialog;

        public ImageLoader(Context context) {
                fileCache = new FileCache(context);
                executorService = Executors.newFixedThreadPool(5);
                progDialog = new ProgressBar(context);
                progDialog.setBackgroundColor(Color.WHITE);
        }

        final int stub_id = R.drawable.blank_image;

        public void displayImage(String url, ImageView imageView) {
                imageViews.put(imageView, url);
                Bitmap bitmap = memoryCache.get(url);
                if (bitmap != null) {
                        progDialog.setVisibility(View.GONE);
                        imageView.setImageBitmap(bitmap);
                }
                else {
                        queuePhoto(url, imageView);
                        imageView.setImageResource(stub_id);
                }
        }

        private void queuePhoto(String url, ImageView imageView) {
                PhotoToLoad p = new PhotoToLoad(url, imageView);
                executorService.submit(new PhotosLoader(p));
        }

        private Bitmap getBitmap(String url) {
                File f = fileCache.getFile(url);

                // from SD cache
                Bitmap b = decodeFile(f);
                if (b != null)
                        return b;

                // from web
                try {
                        Bitmap bitmap = null;
                        URL imageUrl = new URL(url);
                        HttpURLConnection conn = (HttpURLConnection) imageUrl
                                        .openConnection();
                        conn.setConnectTimeout(30000);
                        conn.setReadTimeout(30000);
                        conn.setInstanceFollowRedirects(true);
                        InputStream is = conn.getInputStream();
                        OutputStream os = new FileOutputStream(f);
                        Utils.CopyStream(is, os);
                        os.close();
                        bitmap = decodeFile(f);
                        return bitmap;
                } catch (Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }

        // decodes image and scales it to reduce memory consumption
        private Bitmap decodeFile(File f) {
                try {
                        // decode image size
                        BitmapFactory.Options o = new BitmapFactory.Options();
                        o.inJustDecodeBounds = true;
                        BitmapFactory.decodeStream(new FileInputStream(f), 
null, o);

                        // Find the correct scale value. It should be the power 
of 2.
                        final int REQUIRED_SIZE = 70;
                        int width_tmp = o.outWidth, height_tmp = o.outHeight;
                        int scale = 1;
                        while (true) {
                                if (width_tmp / 2 < REQUIRED_SIZE
                                                || height_tmp / 2 < 
REQUIRED_SIZE)
                                        break;
                                width_tmp /= 2;
                                height_tmp /= 2;
                                scale *= 2;
                        }

                        // decode with inSampleSize
                        BitmapFactory.Options o2 = new BitmapFactory.Options();
                        o2.inSampleSize = scale;
                        return BitmapFactory.decodeStream(new 
FileInputStream(f), null,
o2);
                } catch (FileNotFoundException e) {
                }
                return null;
        }

        // Task for the queue
        private class PhotoToLoad {
                public String url;
                public ImageView imageView;

                public PhotoToLoad(String u, ImageView i) {
                        url = u;
                        imageView = i;
                }
        }

        class PhotosLoader implements Runnable {
                PhotoToLoad photoToLoad;

                PhotosLoader(PhotoToLoad photoToLoad) {
                        this.photoToLoad = photoToLoad;
                }

                @Override
                public void run() {
                        if (imageViewReused(photoToLoad))
                                return;
                        Bitmap bmp = getBitmap(photoToLoad.url);
                        memoryCache.put(photoToLoad.url, bmp);
                        if (imageViewReused(photoToLoad))
                                return;
                        BitmapDisplayer bd = new BitmapDisplayer(bmp, 
photoToLoad);
                        Activity a = (Activity) 
photoToLoad.imageView.getContext();
                        a.runOnUiThread(bd);
                }
        }

        boolean imageViewReused(PhotoToLoad photoToLoad) {
                String tag = imageViews.get(photoToLoad.imageView);
                if (tag == null || !tag.equals(photoToLoad.url))
                        return true;
                return false;
        }

        // Used to display bitmap in the UI thread
        class BitmapDisplayer implements Runnable {
                Bitmap bitmap;
                PhotoToLoad photoToLoad;

                public BitmapDisplayer(Bitmap b, PhotoToLoad p) {
                        bitmap = b;
                        photoToLoad = p;
                }

                public void run() {
                        if (imageViewReused(photoToLoad))
                                return;
                        if (bitmap != null) {
                                progDialog.setVisibility(View.GONE);
                                photoToLoad.imageView.setImageBitmap(bitmap);
                        }
                        else
                                photoToLoad.imageView.setImageResource(stub_id);
                }
        }

        public void clearCache() {
                memoryCache.clear();
                fileCache.clear();
        }
}

can u please tell how to do...


On Mar 5, 5:52 pm, ANKUR GOEL <ankur1...@gmail.com> wrote:
> just put progress bar before imageView in xml and hide the progress bar as
> the image downloads
>
> ProgressBar progressBar = (ProgressBar)
> layout.findViewById(R.id.progressbar_default);
>
>             if(bitmap != null){
>                 imageView.setImageBitmap(bitmap);
>                 imageView.setVisibility(View.VISIBLE);
>                 progressBar.setVisibility(View.GONE);
>             }else{
>                 imageView.setVisibility(View.GONE);
>                 progressBar.setVisibility(View.VISIBLE);
>             }
>
>
>
>
>
>
>
> On Mon, Mar 5, 2012 at 6:17 PM, Seshu <s.seshu...@gmail.com> wrote:
> > Hi all,
> >          I am using grid view and i am downloading the images from
> > internet and need to place in gridview. when images are downloading means i
> > need to show the progress dialog for each photo downloading in gridview.
> > for reference i am attached the image. Can any one help me how to achieve
> > this task.
>
> > Thanks and Regards,
> > S.Seshu.
> > s.seshu143(at)gmail(dot)com
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to