Android 加载图片显示加载进度

Android 加载图片显示加载进度,android,Android,我使用该功能显示图片: Bitmap imageBitmap = loadBitmap(URL); 加载位图,如下所示: private Bitmap loadBitmap(String url) { try { Bitmap bm = BitmapFactory.decodeStream((InputStream)this.fetch(url)); return bm; } catch(Exception e) { e.printStackTrace(); return null; } }

我使用该功能显示图片:

Bitmap imageBitmap = loadBitmap(URL);
加载位图,如下所示:

private Bitmap loadBitmap(String url) {
try {
Bitmap bm = BitmapFactory.decodeStream((InputStream)this.fetch(url));
return bm;
}
catch(Exception e) {
e.printStackTrace();
return null;
}
} 
并获取以下信息:

public Object fetch(String address) {
try {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
catch(Exception e) {
e.printStackTrace();
}
return this;
}
我想在加载时显示加载进度或load.png。 并以图片加载结束并显示它。 我该怎么办? 我试着做一些类似的对话。 但是我不知道怎么用?

你可以用a来做这个。 查看以下链接:

你可以用a来做这个。 查看以下链接:


你不能直接这么做,因为Android不支持GIF文件。因此,为了消除这种情况,您必须创建单独的图像,将图像加载到分割图像中并制作动画。加载时,运行动画,一旦位图可用,停止动画并在ImageView上设置位图,您不能直接这样做,因为Android不支持GIF文件。因此,为了消除这种情况,您必须创建单独的图像,将图像加载到分割图像中并制作动画。加载时,运行动画,一旦位图可用,停止动画并在ImageView上设置位图

此示例在下载图像时显示progressbar,稍后它将不可见

public class ImageDownload extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);

        ImageView mainImageView = (ImageView) findViewById(R.id.imageView);
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
        String imageurl = "http://ipadwallpaperportal.com/wp-content/main/2011_09/purple-flower-close-up-1024x1024-wallpaper.jpg";
        ImageDownloadMessageHandler imageDownloadMessageHandler1 = new ImageDownloadMessageHandler(
                progressBar, mainImageView);
        ImageDownlaodThread imageDownlaodThread = new ImageDownlaodThread(
                imageDownloadMessageHandler1, imageurl);
        imageDownlaodThread.start();

    }

    class ImageDownlaodThread extends Thread {
        ImageDownloadMessageHandler imageDownloadMessageHandler;
        String imageUrl;

        public ImageDownlaodThread(
                ImageDownloadMessageHandler imageDownloadMessageHandler,
                String imageUrl) {
            this.imageDownloadMessageHandler = imageDownloadMessageHandler;
            this.imageUrl = imageUrl;
        }

        @Override
        public void run() {
            Drawable drawable = LoadImageFromWebOperations(imageUrl);
            Message message = imageDownloadMessageHandler.obtainMessage(1,
                    drawable);
            imageDownloadMessageHandler.sendMessage(message);
            System.out.println("Message sent");
        }

    }

    class ImageDownloadMessageHandler extends Handler {
        ProgressBar progressBar;
        View imageTextView;

        public ImageDownloadMessageHandler(ProgressBar progressBar,
                View imageTextView) {
            this.progressBar = progressBar;
            this.imageTextView = imageTextView;
        }

        @Override
        public void handleMessage(Message message) {
            progressBar.setVisibility(View.GONE);
            imageTextView.setBackgroundDrawable(((Drawable) message.obj));
            imageTextView.setVisibility(View.VISIBLE);
        }

    }

    Drawable LoadImageFromWebOperations(String strUrl) {
        /**
         * This is one method
         */
        long x1 = System.currentTimeMillis();

        Drawable d = null;
        InputStream is = null;
        try {
            is = (InputStream) new URL(strUrl).getContent();
            d = Drawable.createFromStream(is, "src name");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        long x2 = System.currentTimeMillis();
        long res = x2 - x1;
        Log.v("Image Downloading Time", "" + res);
}

此示例在下载图像时显示progressbar,稍后它将不可见

public class ImageDownload extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);

        ImageView mainImageView = (ImageView) findViewById(R.id.imageView);
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
        String imageurl = "http://ipadwallpaperportal.com/wp-content/main/2011_09/purple-flower-close-up-1024x1024-wallpaper.jpg";
        ImageDownloadMessageHandler imageDownloadMessageHandler1 = new ImageDownloadMessageHandler(
                progressBar, mainImageView);
        ImageDownlaodThread imageDownlaodThread = new ImageDownlaodThread(
                imageDownloadMessageHandler1, imageurl);
        imageDownlaodThread.start();

    }

    class ImageDownlaodThread extends Thread {
        ImageDownloadMessageHandler imageDownloadMessageHandler;
        String imageUrl;

        public ImageDownlaodThread(
                ImageDownloadMessageHandler imageDownloadMessageHandler,
                String imageUrl) {
            this.imageDownloadMessageHandler = imageDownloadMessageHandler;
            this.imageUrl = imageUrl;
        }

        @Override
        public void run() {
            Drawable drawable = LoadImageFromWebOperations(imageUrl);
            Message message = imageDownloadMessageHandler.obtainMessage(1,
                    drawable);
            imageDownloadMessageHandler.sendMessage(message);
            System.out.println("Message sent");
        }

    }

    class ImageDownloadMessageHandler extends Handler {
        ProgressBar progressBar;
        View imageTextView;

        public ImageDownloadMessageHandler(ProgressBar progressBar,
                View imageTextView) {
            this.progressBar = progressBar;
            this.imageTextView = imageTextView;
        }

        @Override
        public void handleMessage(Message message) {
            progressBar.setVisibility(View.GONE);
            imageTextView.setBackgroundDrawable(((Drawable) message.obj));
            imageTextView.setVisibility(View.VISIBLE);
        }

    }

    Drawable LoadImageFromWebOperations(String strUrl) {
        /**
         * This is one method
         */
        long x1 = System.currentTimeMillis();

        Drawable d = null;
        InputStream is = null;
        try {
            is = (InputStream) new URL(strUrl).getContent();
            d = Drawable.createFromStream(is, "src name");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        long x2 = System.currentTimeMillis();
        long res = x2 - x1;
        Log.v("Image Downloading Time", "" + res);
}
您可以使用AsyncTask在PreExecute方法上显示进度对话框,并在PostExecute方法中隐藏/取消它

您可以使用AsyncTask在PreExecute方法上显示进度对话框,并在PostExecute方法中隐藏/取消它

DownloadBitmap dd = new DownloadBitmap();
dd.execute();