关于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();

原文地址:https://www.cnblogs.com/jkx1229761162/p/4746118.html