今天使用xUtils进行网络图片加载与缓存时始终找不到该如何缓存以及如何使用缓存
看github上说明也没有对这一块的说明 示例代码中也没有相关代码
后来搜索了说xUtil基于afinal进行更改 因为之前没有使用过afinal框架 因此浪费了很多时间
现对此做些介绍
这里是对一张图片进行操作进行介绍
首先创建BitmapUtils时使用带有缓存路径的构造创建 如果要对文件大小进行限制 可以使用三个参数的构造
bitmapUtils = new BitmapUtils(this, cachePath);
其次设置缓存图片名称 这里默认名称可能是对默认图片名称进行MD5转换
缓存图片不是jpg等后缀的图片文件 (开始不知道 一直以为没有进行图片本地缓存)
bitmapUtils.configDiskCacheFileNameGenerator(new FileNameGenerator() {
@Override
public String generate(String arg0) {
return fileName;
}
});
显示图片时默认对图片进行缓存
bitmapUtils.display(iv, img_url);
缓存图片使用
File bitmapFileFromDiskCache = bitmapUtils.getBitmapFileFromDiskCache(cachePath+"/"+fileName);
if(bitmapFileFromDiskCache.exists()){
bitmapUtils.display(iv, cachePath+"/"+fileName);
}else{// TODO 没有图片 加载默认图片
iv.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
}
package com.example.pictest;
import java.io.File;
import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.cache.FileNameGenerator;
import com.lidroid.xutils.view.annotation.ViewInject;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.widget.ImageView;
public class MainActivity extends Activity {
public static final String TEST = "http://221.2.159.215:90/uploads/allimg/090705/1345133136-0.jpg";
private static final String fileName = "cacheFile";
private BitmapUtils bitmapUtils;
private String cachePath;
@ViewInject(R.id.iv)
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewUtils.inject(this);
cachePath = Environment.getExternalStorageDirectory() + "/cacheFileDir";
bitmapUtils = new BitmapUtils(this, cachePath);
bitmapUtils.configDiskCacheFileNameGenerator(new FileNameGenerator() {
@Override
public String generate(String arg0) {
return fileName;
}
});
File bitmapFileFromDiskCache = bitmapUtils.getBitmapFileFromDiskCache(cachePath+"/"+fileName);
if(bitmapFileFromDiskCache == null){
bitmapUtils.display(iv, TEST);
}else {
bitmapUtils.display(iv, cachePath+"/"+fileName);
}
}
}