Universal-Image-Loader的使用

下載地址https://github.com/nostra13/Android-Universal-Image-Loaderandroid

Android 1.5以上支持git

每個圖片的加載和顯示任務都運行在獨立的線程中,除非這個圖片緩存在內存中,這種狀況下圖片會當即顯示。若是須要的圖片緩存在本地,他們會開啓一個獨立的線程隊列。若是在緩存中沒有正確的圖片,任務線程會從線程池中獲取,所以,快速顯示緩存圖片時不會有明顯的障礙。github

                                             

須要的權限c#

<uses-permission android:name="android.permission.INTERNET" />  緩存

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

獲取緩存路徑動畫

File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "imageloader/Cache");  //這個是你但願的緩存文件的目錄:imageloader/Cacheui

File cacheDir = StorageUtils.getCacheDirectory(context);  編碼

ImageLoaderConfiguration的配置

 

1.   File cacheDir = StorageUtils.getCacheDirectory(context);  加密

2.   ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)  

3.           .memoryCacheExtraOptions(480800// default = device screen dimensions  即保存的每一個緩存文件的最大長寬  

4.           .diskCacheExtraOptions(480800, CompressFormat.JPEG, 75null)  //設置緩存的詳細信息,最好不要設置這個 

5.           .taskExecutor(...)  

6.           .taskExecutorForCachedImages(...)  

7.           .threadPoolSize(3// default 線程池設置1~5 避免OOM  

8.           .threadPriority(Thread.NORM_PRIORITY - 1// default  

9.           .tasksProcessingOrder(QueueProcessingType.FIFO) // default  

10.          .denyCacheImageMultipleSizesInMemory()  

11.          .memoryCache(new LruMemoryCache(2 * 1024 * 1024))  

12.          .memoryCacheSize(2 * 1024 * 1024)  

13.          .memoryCacheSizePercentage(13// default  

14.          .diskCache(new UnlimitedDiscCache(cacheDir)) // default  磁盤緩存路徑

15.          .diskCacheSize(50 * 1024 * 1024)  

16.          .diskCacheFileCount(100)  //緩存的文件數量  

17.          .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // defaultMd5FileNameGenerator() Md5加密

18.          .imageDownloader(new BaseImageDownloader(context)) // default  下載超時

19.          .imageDecoder(new BaseImageDecoder()) // default  

20.          .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default  

21.          .writeDebugLogs()  

22.          .build();  

ImageLoader實例化

1.   protected ImageLoader imageLoader = ImageLoader.getInstance();  

DisplayImageOptions 設置

1.   DisplayImageOptions options;  

2.   options = new DisplayImageOptions.Builder()  

3.    .showImageOnLoading(R.drawable.ic_launcher) //設置圖片在下載期間顯示的圖片  

4.    .showImageForEmptyUri(R.drawable.ic_launcher)//設置圖片Uri爲空或是錯誤的時候顯示的圖片  

5.   .showImageOnFail(R.drawable.ic_launcher)  //設置圖片加載/解碼過程當中錯誤時候顯示的圖片

6.   .cacheInMemory(true)//設置下載的圖片是否緩存在內存中  

7.   .cacheOnDisc(true)//設置下載的圖片是否緩存在SD卡中  

8.   .considerExifParams(true)  //是否考慮JPEG圖像EXIF參數(旋轉,翻轉)

9.   .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//設置圖片以如何的編碼方式顯示  

10.  .bitmapConfig(Bitmap.Config.RGB_565)//設置圖片的解碼類型//  

11.  .decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)//設置圖片的解碼配置  

12.  //.delayBeforeLoading(int delayInMillis)//int delayInMillis爲你設置的下載前的延遲時間

13.  //設置圖片加入緩存前,對bitmap進行設置  

14.  //.preProcessor(BitmapProcessor preProcessor)  

15.  .resetViewBeforeLoading(true)//設置圖片在下載前是否重置,復位  

16.  .displayer(new RoundedBitmapDisplayer(20))//是否設置爲圓角,弧度爲多少  

17.  .displayer(new FadeInBitmapDisplayer(100))//是否圖片加載好後漸入的動畫時間  

18.  .build();//構建完成  

imageScaleType(ImageScaleType imageScaleType)  是設置 圖片的縮放方式
     縮放類型mageScaleType:

              EXACTLY :圖像將徹底按比例縮小的目標大小

              EXACTLY_STRETCHED:圖片會縮放到目標大小徹底

              IN_SAMPLE_INT:圖像將被二次採樣的整數倍

              IN_SAMPLE_POWER_OF_2:圖片將下降2倍,直到下一減小步驟,使圖像更小的目標大小

              NONE:圖片不會調整
  2
.displayer(BitmapDisplayer displayer)   是設置 圖片的顯示方式

      顯示方式displayer

              RoundedBitmapDisplayerint roundPixels)設置圓角圖片

              FakeBitmapDisplayer()這個類什麼都沒作

              FadeInBitmapDisplayerint durationMillis)設置圖片漸顯的時間

         SimpleBitmapDisplayer()正常顯示一張圖片 

 

ImageLoader初始化(必需要的步驟,不如出錯)

ImageLoader.getInstance().init(config);

 

用法

1 ImageLoader.getInstance().displayImage(imageUrl, imageView);

加載自定義配置的一個圖片的

ImageLoader.getInstance().displayImage(imageUrl, imageViewoptions); // imageUrl表明圖片的URL地址,imageView表明承載圖片的IMAGEVIEW控件  options表明DisplayImageOptions配置文件 

3圖片加載時候帶加載狀況的監聽

4圖片加載時候,帶監聽又帶加載進度條的狀況

加載其餘來源的圖片

使用類Scheme

 

String assetsUrl = Scheme.ASSETS.wrap("image.png"); 
String drawableUrl = Scheme.DRAWABLE.wrap("R.drawable.image");  
String file= Scheme.FILE.warp("mnt/sdcard/image.png");
String contentprividerUrl = "content://media/external/audio/albumart/13";


GirdView,ListView加載圖片

供了PauseOnScrollListener這個類來控制ListView,GridView滑動過程當中中止去加載圖片,該類使用的是代理模式

1.   listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));  

2.   gridView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));  

第一個參數就是咱們的圖片加載對象ImageLoader, 第二個是控制是否在滑動過程當中暫停加載圖片,若是須要暫停傳true就好了,第三個參數控制猛的滑動界面的時候圖片是否加載

 

OutOfMemoryError

  • 減小線程池中線程的個數,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,推薦配置1-5

  • DisplayImageOptions選項中配置bitmapConfigBitmap.Config.RGB_565,由於默認是ARGB_8888 使用RGB_565會比使用ARGB_8888少消耗2倍的內存

  • ImageLoaderConfiguration中配置圖片的內存緩存爲memoryCache(new      WeakMemoryCache()) 或者不使用內存緩存

  • DisplayImageOptions選項中設置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)

相關文章
相關標籤/搜索