关于xutils中的BitmapUtil实现简单的缓存和下载

使用bitmaputil加载图片时,会自动缓存你已经浏览过的图片。当你下次使用时默认情况下会自动使用历史中的图片。所以你可以在加载这些图片时把对应的url放在list中,下次可以根据需要在历史中获取图片。使用时可以通过判断联网状态判断是从网上获取还是从缓存中获取。

例如:

final String[] urls = new String[]{"http://192.168.1.167:8080/image1.jpg",
"http://192.168.1.167:8080/image2.jpg",
"http://192.168.1.167:8080/image3.jpg",
"http://192.168.1.167:8080/image4.jpg"} ;
bt.setOnClickListener(new OnClickListener() {
int i =0 ;
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

String cachepath =getCacheDir().getPath();    
Log.i(LOG, cachepath) ;

BitmapUtils bUtils = new BitmapUtils(getApplicationContext(),cachepath);      //缓存数据会放在cachepath路径下。

bUtils.display(iv, urls[i++]);
i = i%4 ;
}
});

下载图片时,可以用下面较简单的方法:

new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
URL url;
try {
url = new URL("http://192.168.1.167:8080/image2.jpg");
//创建连接对象
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(0); //设置超时时间
//setDoInput:设置输入的内容 setDoOutput:设置输出的内容
conn.setDoInput(true);
conn.connect();//连接
InputStream is = conn.getInputStream();//获取文件流
Bitmap bitmap = BitmapFactory.decodeStream(is); //转为bitmap数据
FileOutputStream fos = new FileOutputStream(getFilesDir()+"/img2.jpg");
bitmap.compress(CompressFormat.JPEG, 90, fos);     //把bitmap保存到文件中
fos.flush();
fos.close();
Log.i(LOG, "下载图片路径:"+getFilesDir().getPath());
is.close();
Log.i(LOG, "图片下载成功");

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
Toast.makeText(getApplicationContext(), "图片下载失败",1).show();
e.printStackTrace();
}
}
}).start();

时间: 2024-08-02 10:58:18

关于xutils中的BitmapUtil实现简单的缓存和下载的相关文章

生产环境中的PHP WEB 简单架构

使用三台虚拟机器, Ubuntu1(nginx) 192.168.226.128 Ubuntu2(php-fpm+memcached)192.168.226.132 CentOS(MySQL)192.169.226.130 PHP 框架使用CakePHP,这个是很常用的MVC 框架,基于事件的分发模型 当然需要注意的是框架代码要部署在php-fpm机器上,需要在nginx 中配置的配置如下 余下的内容: 1. CakePHP 框架代码 2. PHP 内核 3. Nginx内核 4. 数据库设计模

Android中接口(Interface)的简单使用

  Android中接口(Interface)的简单使用 Java中的接口可以被看作是只包含常量和抽象方法的抽象类 . 可以使用如下方式定义一个接口: public interface InterfaceDemo { int i = 10; void method1(); int method2(); } 使用1: 解决“多重继承”的问题 Java语言本身是不支持类的多重继承(多重继承是指一个类从多个类继承而来,即一个类拥有多个超类)的,但一个类却可以实现多个接口.这样,我们可以将一些抽象方法定

java中Color类的简单总结

java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 public final static Color black = new Color(0,0,0); public final static Color bule = new Color(0,0,255); . . 有很多这样的常量,可供我们直接类名去调用而不需要去实例化. 3.Color中的构造函数 pu

C语言去除数组中重复的字符简单例子

#include <stdio.h> int main(void){ int a[10]={1,2,3,3,4,5,1,3,5,6}; int i,j; int zieo=0; for(i=0;i<10;i++) for(j=i+1;j<10;j++) { if(a[i]==a[j]) { a[j]=0; } } for(i=0;i<10;i++) { if(a[i]!=zieo) { printf("%d\t",a[i]); } } printf(&qu

一、存储过程中使用事务的简单语法

一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 : Create Procedure MyProcedure( @Param1 nvarchar(10),@param2 nvarchar(10))ASBeginSet NOCOUNT ON;Set XACT_ABORT ON;Begin TranDelete from table1 where name=’

Python中关于txt的简单读写模式与操作

Python中关于txt的简单读写操作 常用的集中读写模式: 1.r 打开只读文件,该文件必须存在. 2.r+ 打开可读写的文件,该文件必须存在. 3.w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件. 4.w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失.若文件不存在则建立该文件. 5.a 以附加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留. 6.a+ 以附加方式

【ThinkingInC++】48、用标准C库中的时间函数生成简单的Time类

Cpptime.h /** * 书本:[ThinkingInC++] * 功能:用标准C库中的时间函数生成简单的Time类 * 时间:2014年9月11日07:53:56 * 作者:cutter_point */ #ifndef CPPTIME_H_INCLUDED #define CPPTIME_H_INCLUDED #include<ctime> #include<cstring> //这里ctime和cstring是不包含using namespace std;的而后面加.h

xutils中dbutils的使用

近几天公司交给我一个任务,就是讲公司一个app中的某个功能模块的数据存储方式由sharePreference转为sqlite存储.我已开始就是通过最基础的方式来做的,即这样: package com.mesada.financing.dbutils; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase

ASP.NET中登录功能的简单逻辑设计

 ASP.NET中登录功能的简单逻辑设计                               概述                               逻辑设计                               1.接收参数                               2.判断参数合法性                               3.访问数据库                               4.保存Session