10min实现一个简易图片查看器(图片缓存)
来源:互联网 发布:香草的天空知乎 编辑:程序博客网 时间:2024/06/05 01:05
在昨天简易图片查看器的基础上,我们进一步完善Demo,实现图片缓存功能。
通过httpURLConnection.getInputStream()获取网络请求得到的输入流:
<span style="white-space:pre"></span> InputStream inputStream = httpURLConnection.getInputStream();
我们在CacheDir下新建一个cache.png,用于缓存图片:
File file = new File(getCacheDir(),"cache.png");
接下来通过文件流向文件里写数据(图片):
FileOutputStream fileOutputStream = new FileOutputStream(file); int len = -1; byte[] buffer = new byte[1024]; while ((len = inputStream.read(buffer) )!= -1){ fileOutputStream.write(buffer,0,len); } fileOutputStream.close(); inputStream.close();
通过BitmapFactory将文件解析成图片:
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
然后和之前类似,通过Handler发送消息:
Message message = Message.obtain();//消息池 message.obj = bitmap; mHandler.sendMessage(message);
这是第一次请求网络图片,第二次时我们就可以直接使用缓存,不用访问网络:
先判断一下缓存文件是否有数据:
if(file.exists() && file.length() > 0){
如果有的话直接使用,BitmapFactory解析,Handler发送消息:
Bitmap cacheBitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); Message message = Message.obtain();//消息池 message.obj = cacheBitmap; mHandler.sendMessage(message);
完整源代码如下:
if(code == 200){ InputStream inputStream = httpURLConnection.getInputStream(); //缓存图片 File file = new File(getCacheDir(),"cache.png"); if(file.exists() && file.length() > 0){ Bitmap cacheBitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); Message message = Message.obtain();//消息池 message.obj = cacheBitmap; mHandler.sendMessage(message); }else{ FileOutputStream fileOutputStream = new FileOutputStream(file); int len = -1; byte[] buffer = new byte[1024]; while ((len = inputStream.read(buffer) )!= -1){ fileOutputStream.write(buffer,0,len); } fileOutputStream.close(); inputStream.close(); Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); //Bitmap bitmap = BitmapFactory.decodeStream(inputStream); Message message = Message.obtain();//消息池 message.obj = bitmap; mHandler.sendMessage(message); } }
0 0
- 10min实现一个简易图片查看器(图片缓存)
- 10min实现一个简易图片查看器(触类旁通)
- 10min实现一个简易网站源码查看器(HttpURLConnection、ScrollView)
- 10min实现一个简易网站源码查看器(主线程的概念引入)
- 10min实现一个简易网站源码查看器(Handle的使用)
- 10min实现一个简易网站源码查看器(Handle的完善)
- 简易图片查看器
- jQuery 简易图片查看器
- Android gallery+BaseAdapter实现简易的图片查看器
- 图片查看器---本地图片缓存
- Android简易实战教程--第二十六话《网络图片查看器在本地缓存》
- 简易的图片缓存类
- 带缓存的网页图片查看器
- 带缓存功能的图片查看器
- 24.带缓存的图片查看器
- 基于jQuery的一个简单的图片查看器实现
- 一个简易的ImageLoader,集成图片缓存,图片下载,图片加载到ImageView
- C# 简易图片抽奖器的实现
- Linux系统中项目正常部署,端口被防火墙屏蔽的解决方案
- Android热修复-微信Tinker
- 18.2-Namespaces
- 常见验证码的弱点与验证码识别
- Android popupwindow的简单使用
- 10min实现一个简易图片查看器(图片缓存)
- ceph中的radosgw相关总结
- CodeForces 113D
- [资源贴]NIPS2015下载地址
- 6-Linux文件与目录管理
- PAT04-树4 是否同一棵二叉搜索树【JAVA实现】
- sublime的ConvertToUTF8插件安装
- iOS Version和Build区别
- Java网络编程_基本网络支持(三)