图片缓存的工具类

来源:互联网 发布:宠物商城源码 编辑:程序博客网 时间:2024/06/08 15:28

public class LocalCacheUtils {    String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/zhbj_cache/";    //写缓存    public void setLocalCache(String url, Bitmap bitmap){        File dir = new File(path);        if (!dir.exists() || !dir.isDirectory()) {            dir.mkdir();        }        try {            File cacheFile = new File(dir , MD5Encoder.encode(url));            bitmap.compress(Bitmap.CompressFormat.JPEG,100,new FileOutputStream(cacheFile));        } catch (Exception e) {                e.printStackTrace();        }    }    //读缓存    public Bitmap getLocalCache(String url){        try {            File cacheFile = new File(path,MD5Encoder.encode(url));            if (cacheFile.exists()) {                Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(cacheFile));            return bitmap;            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}

使用前 先初始化 MyBitmapUtils

MyBitmapUtils bitmapurils = new MyBitmapUtils(this)

bitmapurils,disply(你要加载的图片控件 , url ) ;

只需两步 就可实现 图片缓存的 逻辑

1.根据url下载图片 将图片设置给imageview 3. 图片缓存 , 4.避免内存溢出


/** * 三级缓存工具类 */public class MyBitmapUtils {    private  NetCacheUtils mNetCacheUtils;    private LocalCacheUtils mLocalCacheUtils;    public MyBitmapUtils() {        mNetCacheUtils = new NetCacheUtils(mLocalCacheUtils);        mLocalCacheUtils = new LocalCacheUtils();    }    //加载图片    public void display(ImageView imageView, String url) {        //网络缓存        mNetCacheUtils.getBitmapFromNet(imageView,url);        //本地缓存        Bitmap bitmap = mLocalCacheUtils.getLocalCache(url);        if (bitmap !=null) {            imageView.setImageBitmap(bitmap);            System.out.println("本地加载缓存了");            return;        }    }}

import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.widget.ImageView;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;/** * 网络缓存的工具类 */public class NetCacheUtils {    private LocalCacheUtils localCacheUtils;    public NetCacheUtils(LocalCacheUtils localCacheUtils) {        this.localCacheUtils = localCacheUtils;    }    public void getBitmapFromNet(ImageView imageView, String url) {        //异步下载图片        new BitmapTask().execute(imageView,url);    }    class BitmapTask extends AsyncTask<Object,Void,Bitmap>{        private ImageView mImagView;        private String url;        @Override        protected void onPreExecute() {            super.onPreExecute();        }        @Override        protected Bitmap doInBackground(Object... params) {            mImagView = (ImageView) params[0];            url = (String) params[1];            Bitmap bitmap =  download(url);            return bitmap;        }        @Override        protected void onPostExecute(Bitmap result) {            if (result != null) {                mImagView.setImageBitmap(result);                System.out.println("从网络下载图片拉");                localCacheUtils.setLocalCache(url,result);            }        }    }    private Bitmap download(String url) {         HttpURLConnection conn = null;        try {            conn = (HttpURLConnection) new URL(url).openConnection();            conn.setRequestMethod("GET");            conn.setConnectTimeout(6000);            conn.setReadTimeout(6000);            conn.connect();            int responseCode = conn.getResponseCode();            if (responseCode == 200) {                InputStream inputStream = conn.getInputStream();                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);                return bitmap;            }        } catch (IOException e) {            e.printStackTrace();        }finally {            if (conn!=null) {                conn.disconnect();            }        }        return null;    }}

下载地址 :
http://download.csdn.net/detail/q9104422999/9701531

0 0