图片缓存的工具类
来源:互联网 发布:宠物商城源码 编辑:程序博客网 时间: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
- 图片缓存的工具类
- 图片缓存工具类
- 图片缓存工具类
- 图片缓存工具类
- 图片加载的缓存工具类
- 图片三级缓存工具类
- android中图片内存缓存的工具类的实现
- 图片相关操作的工具类 下载 ,缓存到文件
- 【android】实现图片的三级缓存。工具类
- android 实现图片的三级缓存工具类
- GIS图片缓存工具GeoWebCache的使用说明
- 基与LruCache(内存缓存)和 DiskLruCache(硬盘缓存)的图片三级缓存工具类
- zhu的工作日记:图片三级缓存的工具类(android)
- 安卓中缓存的工具类
- 清除缓存的工具类
- 自己写的一个图片三级缓存的工具类,下载图片使用的是volley和httpUrlConnection相同
- 几个常用的工具类-异步下载、handler下载工具类、图片缓存等
- 图片加载的缓存类
- J2SE第八章——IO输入输出流(总结)
- java8 时间类API
- openssl动态库生成以及交叉编译
- 471D - MUH and Cube Walls (KMP)
- AngularJS表单验证
- 图片缓存的工具类
- 两两交换链表中的节点
- 测试字符串是否相等的方法
- 邮件telnet
- HTML中的空元素
- Spring容器中Bean的作用域
- 浅析数字信号的载波调制
- 量化交易
- CalcOpticalFlowPyrLK