上篇文章 从零开始编写图片加载库(一)之Handler+Thread图片下载我们是通过Handler+Message来更新View,这张我们来通过android提供的异步操作AsyncTask来进行网络图片下载。
package cn.sundroid.file;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
private final String TAG = this.getClass().getSimpleName();
private Button save;
private Button get;
private ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
save = (Button) findViewById(R.id.save);
save.setOnClickListener(this);
get = (Button) findViewById(R.id.get);
get.setOnClickListener(this);
image = (ImageView) findViewById(R.id.image);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.get:
new MyAsyncTask().execute("");
break;
case R.id.save:
break;
default:
break;
}
}
private class MyAsyncTask extends AsyncTask {
@Override
protected Bitmap doInBackground(String... params) {
String url = "http://b.hiphotos.baidu.com/image/pic/item/0824ab18972bd4073cc730f479899e510fb309b2.jpg";
Bitmap bitmap = null;
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setReadTimeout(20 * 1000);
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
image.setImageBitmap(result);
}
}
}
图片就不贴了效果图和上一章节一样。如果你对AsyncTask不了解可以读这篇文章