Android開源框架Universal-Image-Loader

  1. 多線程下載圖片,圖片能夠來源於網絡,文件系統,項目文件夾assets中以及drawable中等java

  2. 支持隨意的配置ImageLoader,例如線程池,圖片下載器,內存緩存策略,硬盤緩存策略,圖片顯示選項以及其餘的一些配置android

  3. 支持圖片的內存緩存,文件系統緩存或者SD卡緩存git

  4. 支持圖片下載過程的監聽github

  5. 根據控件(ImageView)的大小對Bitmap進行裁剪,減小Bitmap佔用過多的內存緩存

  6. 較好的控制圖片的加載過程,例如暫停圖片加載,從新開始加載圖片,通常使用在ListView,GridView中,滑動過程當中暫停加載圖片,中止滑動的時候去加載圖片網絡

  7. 提供在較慢的網絡下對圖片進行加載多線程

1.自定義XXXAppllication類,初始化ImageLoader

public class XXXApplication extends Application {  @Override  public void onCreate() {    super.onCreate();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())          .denyCacheImageMultipleSizesInMemory()          .memoryCache(new LruMemoryCache(2 * 1024 * 1024))          .memoryCacheSize(2 * 1024 * 1024)          .discCacheSize(50 * 1024 * 1024)          .denyCacheImageMultipleSizesInMemory()  
  .discCacheFileNameGenerator(new Md5FileNameGenerator())  
  .tasksProcessingOrder(QueueProcessingType.LIFO)  
          .discCacheFileCount(100)          .writeDebugLogs()  .build();
        ImageLoader.getInstance().init(config);  }
}

2.在AndroidManifest.xml文件的application標籤里加入

android:name=".XXXApplication"

3.使用imageloader

public class ImageManager{   public static void Load(String imgUrl,ImageView imageView){    ImageLoader.getInstance().displayImage(imgUrl, imageView);   }   public static void Load(String imgUrl,ImageView imageView,DisplayImageOptions o){     ImageLoader.getInstance().displayImage(imgUrl, imageView,o);   }
}

4.部分參數介紹(  DisplayImageOptions ) 

//設置圖片在下載期間顯示的圖片  showStubImage(R.drawable.ic_launcher) 
  //設置圖片Uri爲空或是錯誤的時候顯示的圖片  showImageForEmptyUri(R.drawable.ic_empty) 
  //設置圖片加載/解碼過程當中錯誤時候顯示的圖片  showImageOnFail(R.drawable.ic_error) 
  //設置圖片在下載前是否重置,復位  resetViewBeforeLoading() 
  //設置下載的圖片是否緩存在內存中  cacheInMemory() 
  //設置下載的圖片是否緩存在SD卡中  cacheOnDisc() 
  //設置圖片的解碼類型  bitmapConfig(Bitmap.Config.RGB_565) 
  //設置圖片的解碼配置  decodingOptions(android.graphics.BitmapFactory.Options decodingOptions) 
  //設置圖片下載前的延遲  delayBeforeLoading(int delayInMillis) 
  //設置額外的內容給ImageDownloader  extraForDownloader(Object extra) 
  //設置圖片加入緩存前,對bitmap進行設置  preProcessor(BitmapProcessor preProcessor) 
  //設置顯示前的圖片,顯示後這個圖片一直保留在緩存中  postProcessor(BitmapProcessor postProcessor) 
  //設置圖片以如何的編碼方式顯示  imageScaleType(ImageScaleType imageScaleType)/**
 * 設置圖片的顯示方式
 * @param displayer
 */displayer(BitmapDisplayer displayer)
displayer:    RoundedBitmapDisplayer(int roundPixels)設置圓角圖片    FakeBitmapDisplayer()這個類什麼都沒作    FadeInBitmapDisplayer(int durationMillis)設置圖片漸顯的時間
     SimpleBitmapDisplayer()正常顯示一張圖片  /**
 * 圖片的縮放方式
 * @param imageScaleType
 */
    imageScaleType(ImageScaleType imageScaleType)
    imageScaleType:          EXACTLY :圖像將徹底按比例縮小的目標大小          EXACTLY_STRETCHED:圖片會縮放到目標大小徹底          IN_SAMPLE_INT:圖像將被二次採樣的整數倍          IN_SAMPLE_POWER_OF_2:圖片將下降2倍,直到下一減小步驟,使圖像更小的目標大小          NONE:圖片不會調整/**
*DisplayImageOptions簡單示例
*/// 建立默認的DisplayImageOptionsDisplayImageOptions option_0=DisplayImageOptions.createSimple();// 使用DisplayImageOptions.Builder()建立DisplayImageOptionsDisplayImageOptions options = new DisplayImageOptions.Builder()  
  .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)  .showStubImage(R.drawable.loading)  
  .showImageForEmptyUri(R.drawable.load_fail)  
  .showImageOnFail(R.drawable.load_fail)  
  .cacheInMemory(true)  
  .cacheOnDisc(true)    
  .build();

5.最後別忘了權限

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

源碼下載

相關文章
相關標籤/搜索