服務器返回圖片的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());