package com.umeng.example.xp; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; public abstract class ImageLoadTask extends AsyncTask<Void, Void, Drawable> { private String url; public ImageLoadTask(String url) { super(); this.url = url; } @Override protected Drawable doInBackground(Void... params) { Drawable drawable = null; try { InputStream in = (InputStream) new URL(url).openConnection().getContent(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buf = new byte[4 * 1024]; // 4K buffer int bytesRead; while ((bytesRead = in.read(buf)) != -1) { bos.write(buf, 0, bytesRead); } byte[] byteArray = bos.toByteArray(); Bitmap decodeByteArray = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); drawable = new BitmapDrawable(decodeByteArray); in.close(); bos.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return drawable; } @Override protected void onPostExecute(Drawable result) { super.onPostExecute(result); onRecived(result); } public abstract void onRecived(Drawable result); }