学而实习之 不亦乐乎

Android 网络异步加载图片

2020-09-06 15:36:09

从网络上下载图片并显示,也是一个耗时的操作,因此需要使用一个子线程进行处理并更新 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);
    }
}

这里只是简单实现异步消息处理,当然还可以实现更为复杂的功能,如下载进度等,这里不再多说。