天天看點

ImageLoader配置

GITHUB上的下載下傳路徑為:https://github.com/nostra13/Android-Universal-Image-Loader ,下載下傳最新的庫檔案,并且導入到項目的LIB下便可以使用。      
1.Imageloader全局配置      
ImageLoaderConfiguration config = new ImageLoaderConfiguration  
    .Builder(context)  
    .memoryCacheExtraOptions(480, 800) // max width, max height,即儲存的每個緩存檔案的最大長寬       
// Can slow ImageLoader, use it carefully (Better don't use it)/設定緩存的詳細資訊,最好不要設定這個        
.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null) 
.threadPoolSize(3)//線程池内加載的數量  
    .threadPriority(Thread.NORM_PRIORITY - 2)  
    .denyCacheImageMultipleSizesInMemory()  
    .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通過自己的記憶體緩存實作  
    .memoryCacheSize(2 * 1024 * 1024)    
    .discCacheSize(50 * 1024 * 1024)    
    .discCacheFileNameGenerator(new Md5FileNameGenerator())//将儲存的時候的URI名稱用MD5 加密  
    .tasksProcessingOrder(QueueProcessingType.LIFO)  
    .discCacheFileCount(100) //緩存的檔案數量  
    .discCache(new UnlimitedDiscCache(cacheDir))//自定義緩存路徑  
    .defaultDisplayImageOptions(DisplayImageOptions.createSimple())  
    .imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)逾時時間  
    .writeDebugLogs() // Remove for release app  
    .build();//開始建構  
    // Initialize ImageLoader with configuration. 


一般需要在Application中初始化Imageloader:
ImageLoader.getInstance().init(config);//全局初始化此配置        
2.Imageloader配置需要顯示的圖檔      
之後進行顯示的圖檔的各種格式DisplayImageOptions 的設定:
DisplayImageOptions options;  
options = new DisplayImageOptions.Builder()  
 .showImageOnLoading(R.drawable.ic_launcher) //設定圖檔在下載下傳期間顯示的圖檔  
 .showImageForEmptyUri(R.drawable.ic_launcher)//設定圖檔Uri為空或是錯誤的時候顯示的圖檔  
.showImageOnFail(R.drawable.ic_launcher)  //設定圖檔加載/解碼過程中錯誤時候顯示的圖檔
.cacheInMemory(true)//設定下載下傳的圖檔是否緩存在記憶體中  
.cacheOnDisc(true)//設定下載下傳的圖檔是否緩存在SD卡中  
.considerExifParams(true)  //是否考慮JPEG圖像EXIF參數(旋轉,翻轉)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//設定圖檔以如何的編碼方式顯示  
.bitmapConfig(Bitmap.Config.RGB_565)//設定圖檔的解碼類型//  
.decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)//設定圖檔的解碼配置  
//.delayBeforeLoading(int delayInMillis)//int delayInMillis為你設定的下載下傳前的延遲時間
//設定圖檔加入緩存前,對bitmap進行設定  
//.preProcessor(BitmapProcessor preProcessor)  
.resetViewBeforeLoading(true)//設定圖檔在下載下傳前是否重置,複位  
.displayer(new RoundedBitmapDisplayer(20))//是否設定為圓角,弧度為多少  
.displayer(new FadeInBitmapDisplayer(100))//是否圖檔加載好後漸入的動畫時間  
.build();//建構完成 
      
說明:


 1).imageScaleType(ImageScaleType imageScaleType) 是設定圖檔的縮放方式縮放類型mageScaleType:
              EXACTLY :圖像将完全按比例縮小的目标大小
              EXACTLY_STRETCHED:圖檔會縮放到目标大小完全
              IN_SAMPLE_INT:圖像将被二次采樣的整數倍
              IN_SAMPLE_POWER_OF_2:圖檔将降低2倍,直到下一減少步驟,使圖像更小的目标大小
              NONE:圖檔不會調整
  2).displayer(BitmapDisplayer displayer) 是設定圖檔的顯示方式顯示方式displayer,是以我們可以自定義我們需要顯示的圖檔樣式,當然SDK中已經定義好了幾種:
              RoundedBitmapDisplayer(int roundPixels)設定圓角圖檔
              FakeBitmapDisplayer()
              FadeInBitmapDisplayer(int durationMillis)設定圖檔漸顯的時間
         SimpleBitmapDisplayer()正常顯示一張圖檔




3.監聽圖檔下載下傳進度,可以實作這個監聽接口來顯示下載下傳進度


imageLoader.displayImage(imageUrl, imageView, options, new ImageLoadingListener() {  
    @Override  
    public void onLoadingStarted() {  
       //開始加載的時候執行  
    }  
    @Override  
    public void onLoadingFailed(FailReason failReason) {        
       //加載失敗的時候執行  
    }   
    @Override   
    public void onLoadingComplete(Bitmap loadedImage) {  
       //加載成功的時候執行  
    }   
    @Override   
    public void onLoadingCancelled() {  
       //加載取消的時候執行  
  
    }});  





4.顯示所有來源圖檔的加載方式:
      
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)