首先创建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));
}
实践证明,不需要设置缓存的名称,xUtils会自动帮我们在cachePath中寻找图片缓存是否存在,存在时会自动加载缓存文件!
个人认为,Universal-Image-Loader比xUtils更稳当!
- 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);
- }
- }
- }