服务器返回图片的url,本地使用图片异步加载组件 ImageLoader。图片的url有如下几种:
(1)from Web
String imageUri = "http://site.com/image.png";
(2)from SD card
String imageUri = "file:///mnt/sdcard/image.png";
(3)from content provider
String imageUri = "content://media/external/audio/albumart/13";
(4)from assets
String imageUri = "assets://image.png";
(5)from drawables (only images, non-9patch)
String imageUri = "drawable://" + R.drawable.image;
配置ImageLoaderConfiguration这个类实现全局ImageLoader的显示情况
图片格式的设置:DisplayImageOptions options
public class ImgCacheUtil {
private static ImgCacheUtil imgCacheUtil = null;
private static ImageLoaderConfiguration config;
private DisplayImageOptions options;
private String cacheDir = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "app/cache";
public static ImgCacheUtil getInstance() {
if (imgCacheUtil == null)
imgCacheUtil = new ImgCacheUtil();
return imgCacheUtil;
}
private ImgCacheUtil() {
options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.icon) //设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.icon) //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory() //设置下载的图片是否缓存在内存中
.cacheOnDisc() //设置下载的图片是否缓存在SD卡中
.imageScaleType(ImageScaleType.EXACTLY) //设置图片缩放方式,缩放至目标大小
.bitmapConfig(Bitmap.Config.RGB_565) //设置图片的解码类型
.resetViewBeforeLoading() //设置图片在下载前是否重置,复位
.displayer(new RoundedBitmapDisplayer(20)) //设置图片显示方式,是否设置为圆角,弧度为多少
//设置图片渐显时间 FadeInBitmapDisplayer(int durationMillis)
//正常显示一张图片SimpleBitmapDisplayer()
.build();
config = new ImageLoaderConfiguration.Builder(ParentApplication.getInstance())
.memoryCacheExtraOptions(480, 800) //即保存的每个缓存文件的最大长宽
.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 0) //设置缓存的详细信息,最好不要设置这个
.threadPoolSize(3) //线程池内加载的数量
.discCacheFileCount(50) //缓存的文件数量
.discCache(new UnlimitedDiscCache(new File(cacheDir))) //自定义缓存路径
.discCacheFileNameGenerator(new Md5FileNameGenerator()) ///使用MD5对缓存文件进行加密命名
.memoryCache(new UsingFreqLimitedMemoryCache(2*1024*1024))//可以通过自己的内存缓存实现
.memoryCacheSize(2*1024*1024)
.discCacheSize(50*1024*1024)
.tasksProcessingOrder(QueueProcessingType.LIFO)
.build();
}
public ImageLoaderConfiguration getImgLoaderConfig(){
return config;
}
/**
* String imageUri = "http://site.com/image.png"; // from Web
* String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
* String imageUri = "content://media/external/audio/albumart/13"; // from content provider
* String imageUri = "assets://image.png"; // from assets
* String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)
* 加载自定义配置的图片
* @param url
* @param imageView
* @param options
*/
public void displayImage(String url, ImageView imageView){
ImageLoader.getInstance().displayImage(url, imageView, options);
}
/**
* @param url
* @param imageView
* @param listener 监听图片下载情况
*/
public void displayImage(String url, ImageView imageView, ImageLoadingListener listener){
ImageLoader.getInstance().displayImage(url, imageView, options, listener);
}
注:ImageLoaderConfiguration类在使用之前要进行初始化,否则会报错
ImageLoader.getInstance().init(ImgCacheUtil.getInstance().getImgLoaderConfig());