Android 网络异步加载图片
从网络上下载图片并显示,也是一个耗时的操作,因此需要使用一个子线程进行处理并更新 UI,也就是异步消息处理机制。我们可以自己实现异步消息处理机制,也可以使用现成的工具,如 AsyncTask。
这里举个简单的加载网络图片的例子,加载图片的 AsyncTask 代码大概如下所示:
只需传入 ImageView 控件,用于更新 UI 即可。
public class ImageTools extends AsyncTask<String,Integer,Bitmap> {
private ImageView imageView;
public ImageTools(ImageView imageView) {
this.imageView = imageView;
}
@Override
protected Bitmap doInBackground(String... paths) {
Bitmap bitmap = null;
try {
URL url = new URL(paths[0]);//创建URL连接
URLConnection connection = url.openConnection();//打开连接
InputStream stream = connection.getInputStream();//获取输输入流
bitmap = BitmapFactory.decodeStream(stream);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
}
}
这里只是简单实现异步消息处理,当然还可以实现更为复杂的功能,如下载进度等,这里不再多说。