图片异步加载工具类

来源:互联网 发布:通达信趋势浪指标源码 编辑:程序博客网 时间:2024/06/05 06:26

我们的程序中,加载图片一般都是用的第三方ImageLoader很方便,但是如果用最原始的异步加载图片,应该怎样加载呢?本文就是讲解怎样异步加载图片

首先写一个类继承AsyncTask,代码如下:

public class DownLoadImage extends AsyncTask<String,Void,Bitmap>{    //构造    private DownloadListener downloadListener;    public DownLoadImage(DownloadListener downloadListener) {        this.downloadListener = downloadListener;    }    public interface DownloadListener{        public void preDoSomething();        public void afterDoSomething(Bitmap bitmap);    }    @Override    protected Bitmap doInBackground(String... strings) {        //耗时操作        try {            //url            String path=strings[0];            URL url=new URL(path);            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            conn.setRequestMethod("GET");            conn.setConnectTimeout(5000);            //获得请求码            int code= conn.getResponseCode();            if(code==200){                InputStream is = conn.getInputStream();                //获得图片                Bitmap bitmap= BitmapFactory.decodeStream(is);                return bitmap;            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    @Override    protected void onPreExecute() {        downloadListener.preDoSomething();        super.onPreExecute();    }    @Override    protected void onPostExecute(Bitmap bitmap) {        downloadListener.afterDoSomething(bitmap);        super.onPostExecute(bitmap);    }}
调用此方法:

//加载图片        private void loadImage(final ImageView img, String imgpath) {            DownLoadImage dl=new DownLoadImage(new DownLoadImage.DownloadListener() {                @Override                public void preDoSomething() {                    img.setImageResource(R.mipmap.ic_launcher);                }                @Override                public void afterDoSomething(Bitmap bitmap) {                    if(bitmap!=null){                        img.setImageBitmap(bitmap);                    }else{                        img.setImageResource(R.mipmap.ic_launcher);                    }                }            });            //请求图片            <span style="color:#ff0000;">dl.execute(imgpath);</span>        }

简单的几行代码,就实现了图片的异步加载代码


0 0
原创粉丝点击