加载图片显示加载进度

时间:2011-12-20 03:41:18

标签: android

我使用该功能来显示图片:

Bitmap imageBitmap = loadBitmap(URL);

loadBitmap()如下:

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。 并以图片加载结束并显示它。 我能怎么做? 我试着像ProgressDialog一样。 但我不知道怎么用?

4 个答案:

答案 0 :(得分:2)

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

ProgressDialog prog = new ProgressDialog(this); // Create Progress Dialog


private class DownloadBitmap extends AsyncTask<Void, Integer, Void>{

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        //Display progressDialog before download starts
        prog.show();

    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        prog.hide(); //Hide Progress Dialog else use dismiss() to dismiss the dialog
    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
        /*
         * Perform download and Bitmap conversion here
         * 
         */
        return null;
    }

}

最后通过,

调用AsyncTask
DownloadBitmap dd = new DownloadBitmap();
dd.execute();

答案 1 :(得分:1)

您可以使用ProgressBar。 看看这些链接:

Tutorial 1

Tutorial 2

答案 2 :(得分:1)

你不能直接这样做,因为Android不支持GIF文件。因此,您必须创建单独的图像(将图像加载到分割图像中)并制作动画。在加载时运行动画并且一旦Bitmap停止动画并在ImageView上设置Bitmap

答案 3 :(得分:1)

此示例显示下载图像时的进度条,稍后它将不可见。

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