服务器返回图片的url,本地使用图片异步加载组件 ImageLoader。图片的url有以下几种:java
(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 app
String imageUri = "content://media/external/audio/albumart/13";
(4)from assets 异步
String imageUri = "assets://image.png";
(5)from drawables (only images, non-9patch)ide
String imageUri = "drawable://" + R.drawable.image;
配置ImageLoaderConfiguration这个类实现全局ImageLoader的显示状况ui
图片格式的设置: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类在使用以前要进行初始化,不然会报错url
ImageLoader.getInstance().init(ImgCacheUtil.getInstance().getImgLoaderConfig());