android加载网络图片并保留缓存,随时点击打开
来源:互联网 发布:mill9.1编程教程清角 编辑:程序博客网 时间:2024/05/18 22:39
今天工作需要写了一个保留网络图片缓存的类,和大家分享一下
其实实现原理很简单,也就是从网上下载图片数据,一边将数据转成drawable并加载到指定的imageview
一边保存成download_image.jpg,在点击imageview时候用intent将图片打开
我将处理图片的过程写成了类
package com.example.downloadandopenimage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import android.content.Context;import android.content.Intent;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.AsyncTask;import android.os.Environment;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.ProgressBar;public class LoadAndSaveImage {ImageView view;Context mContext;public LoadAndSaveImage() {// TODO Auto-generated constructor stub}public LoadAndSaveImage(Context context, String str, ImageView view) {// TODO Auto-generated constructor stubthis.view = view;mContext = context;new Load_and_save_image().execute(str);}void release() {File file = new File("file://"+ Environment.getExternalStorageDirectory().toString()+ "/download_image.jpg");if (file.exists()) {boolean deleted = file.delete();}}class Load_and_save_image extends AsyncTask<String, Void, Void> {@Overrideprotected Void doInBackground(String... sUrl) {// TODO Auto-generated method stubInputStream input = null;OutputStream output = null;HttpURLConnection connection = null;try {URL url = new URL(sUrl[0]);connection = (HttpURLConnection) url.openConnection();connection.connect();// download the fileinput = connection.getInputStream();File checker = new File("file://"+ Environment.getExternalStorageDirectory().toString()+ "/download_image.jpg");if (checker.exists()) {boolean deleted = checker.delete();}output = new FileOutputStream(Environment.getExternalStorageDirectory().toString()+ "/download_image.jpg");byte data[] = new byte[4096];int count;while ((count = input.read(data)) != -1) {output.write(data, 0, count);}} catch (Exception e) {} finally {try {if (input != null)input.close();if (output != null) {output.close();}} catch (IOException ignored) {}if (connection != null)connection.disconnect();}return null;}protected void onPostExecute(Void result) {Drawable d = Drawable.createFromPath(Environment.getExternalStorageDirectory().toString()+ "/download_image.jpg");view.setImageDrawable(d);view.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setDataAndType(Uri.parse("file://"+ Environment.getExternalStorageDirectory().toString() + "/download_image.jpg"),"image/*");mContext.startActivity(intent);}});};}}
只要在activity中这样写:
image = (ImageView) findViewById(R.id.image);new LoadAndSaveImage(getApplicationContext(), "http://toolongdidntread.com/wp-content/uploads/2011/06/upload.png", image);
三个参数分别是content,图片的url,你要加载的imageview
BTW,由于这里设置的储存的jpg文件名字是固定的,加载多张图片时请用随机数或者自行命名
源码在这里:→http://download.csdn.net/detail/edwardwayne/8621419
0 0
- android加载网络图片并保留缓存,随时点击打开
- android加载网络图片并缓存,对图片进行点击打开相应链接
- Android 加载网络图片并做缓存
- Android 异步加载网络图片并缓存到本地
- Android 异步加载网络图片并缓存到本地
- Android 异步加载网络图片并缓存到本地
- Android 异步加载网络图片并缓存到本地
- Android:ViewPager详解(异步网络加载图片,带图片缓存,并带导航小圆点)
- Android:ViewPager详解(异步网络加载图片,带图片缓存,并带导航小圆点)
- 加载网页内容与图片并点击打开web
- Android异步加载网络图片 + 双缓存
- android 异步加载网络图片缓存机制
- Android网络图片加载三级缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- HTML的base标签在ie6下的问题解决
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- jquery在form表单取值的简单应用
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- Android 软键盘盖住输入框的问题
- android加载网络图片并保留缓存,随时点击打开
- 【facebook】程序猿提高工作效率的15点技巧
- 数据结构--树的三种遍历(递归与非递归实现)
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
- 对于locationprovider中的onLocationChanged不执行的分析
- Makefile文件生成 GNU Autotools的使用方法
- 在Mac系统上安装Tomcat
- SwipeRefreshLayout组件 实现ListView下拉刷新
- 年轻?大有所为!——问题集一网页中文乱码