package com.com.mr_wrong.AsyncTask; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; /** * Created by Mr_Wrong on 2015/5/1. */ public class MyAsyncTask extends AsyncTask<String, Integer, Bitmap> { private ImageView imageView; private ProgressBar progressBar; public MyAsyncTask(ImageView imageView, ProgressBar progressBar) { this.imageView = imageView; this.progressBar = progressBar; } @Override protected Bitmap doInBackground(String... params) { Bitmap bitmap = null; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); InputStream inputStream = null; try { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(params[0]); HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { inputStream = httpResponse.getEntity().getContent(); //获取总长度 long file_length = httpResponse.getEntity().getContentLength(); int len = 0; byte[] data = new byte[1024]; int total_length = 0; int value = 0; while ((len = inputStream.read(data)) != -1) { if (this.isCancelled()) { break; } total_length += len; value = (int) (total_length / file_length * 100); publishProgress(value); outputStream.write(data, 0, len); } Thread.sleep(500); byte[] result = outputStream.toByteArray(); bitmap = BitmapFactory.decodeByteArray(result, 0, result.length); inputStream.close(); outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { } return bitmap; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); if(this.isCancelled()){ return; } progressBar.setProgress(values[0]); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); imageView.setImageBitmap(bitmap); progressBar.setVisibility(View.GONE); } }