- Travis CI, added Unit tests (#189)
- Introduced
DisplayImageOptions.handler(Handler)(#231) - Fixed bugs:
- Improved work with Strings on UI thread (#244)
- Android 2.0+ support
- Added EXIF orientation support (#172)
- Introduced
ImageLoaderConfiguration.imageDecoder(ImageDecoder) - Introduced
DisplayImageOptions.decodingOptions(BitmapFactory.Options) - Handled disc cache non-availability
- Use
LruMemoryCacheas default memory cache for API >= 9,LRULimitedMemoryCache- for API < 9. Default memory cache size - 1/8 of available app memory. - Improved
LimitedDiscCacheandFuzzyKeyMemoryCacheperformance - Fixed bugs:
.denyCacheImageMultipleSizesInMemorydoesn't work if own memory cache is setjava.lang.NoSuchMethodErrorin sample app (#206)
- Changed API:
ImageDownloader.getStream***(URI, ...)->ImageDownloader.getStream***(String, ...)- Made
FailReasonas a class instead of enum. Can be used in switches:FailReason.getType() - Removed
ImageLoader.offOutOfMemoryHandling(). ImageLoader doesn't handle OutOfMemoryError by default anymore (but still catches it for callbacks).
- Introduced
ImageLoader.taskExecutor(Executor)andImageLoader.taskExecutorForCachedImages(Executor)(#187) - Introduced
ImageLoader.destroy() - Handled SD card unmount (#170)
- Added
Schemeclass - Fixed bugs:
- Changed API:
ImageLoader.denyNetworkDownloads()->ImageLoader.denyNetworkDownloads(true)ImageLoader.allowNetworkDownloads()->ImageLoader.denyNetworkDownloads(false)
- Introduced
ImageLoader.denyNetworkDownloads(boolean) - Introduced
ImageLoader.handleSlowNetwork(boolean).FlushedInsputStreamisn't used for downloads by default. - Handled HTTP(S) redirects
- Added
LruMemoryCache(based on Android's LruCache), uses only strong references. - Fixed
DisplayImageOptions.cloneFrom(...)(#173) - Fixed ConcurrentModification issue in
MemoryCacheUtil. findCacheKeysForImageUri(...)(#174) - Fixed issue "Disc Cache can't find image by URI with special/local UTF-8 characters"
- Improved calculation of target image size to scale (consider measured View width and height)
- Changed API:
- Signatures:
ImageLoader.loadImage(Context, ...)->ImageLoader.loadImage(...)ImageDownloader.getStream(URI)->ImageDownloader.getStream(URI, Object)(#150)ImageLoadingListener.onLoading***(...)->ImageLoadingListener.onLoading***(String, View, ...)(#130)- Constructor
PauseOnScrollListener(...)->PauseOnScrollListener(ImageLoader, ...)
ImageDownloaderbecame interface,URLConnectionImageDownloader+ExtendedImageDownloader->BaseImageDownloader- Renaming:
FileUtil->IoUtil - Removed deprecated
ImageScaleType.POWER_OF_2andImageScaleType.EXACT
- Signatures:
- Support of "content://", "assets://", "drawable://" URI schemes out of the box (#162)
- Introduced
DisplayImageOptions.showImageOnFail(int) - Introduced
DisplayImageOptions.preProcessor(BitmapProcessor)andDisplayImageOptions.postProcessor(BitmapProcessor)(#151) - Introduced
DisplayImageOptions.extraForDownloader(Object), allows to pass auxiliary object which will be passed toImageDownloader.getStream(URI, Object)(#150) - Introduced
ImageLoader.denyNetworkDownloads()andImageLoader.allowNetworkDownloads()(#148) - Introduced
FailReason.UNSUPPORTED_URI_SCHEMEandFailReason.NETWORK_DENIED - Introduced
ImageScaleType.NONE - Added
DiscCacheUtil - Prepared ImageLoader to be extandable for creation of multiple instances (#158)
- Fixed bug "Images aren't loaded after "Clear Cache" in app info" (#168)
- Switched to Apache 2.0 license
- Avoid I/O operations on the main thread, prevented ANR (#129, #154)
- Correctly handled every ImageView's scale type in
RoundedBitmapDisplayer(#70) - Prevented slow precaching modified date in LimitedAgeDiscCache constructor (for large number of images in cache) (#141)
- Introduced
ImageLoader.isInited()method. Throw IllegalStateException ondisplayImage(...),loadImage(...),getMemoryCache(),clearMemoryCache(),getDiscCache(),clearDiscCache()calls if ImageLoader isn't inited with config. - Closed OutputStream after Bitmap compressing (#115)
- Sample: Refactored resources
- Maven support
- Introduced
ImageLoader.pause()andImageLoader.resume()(#106) - Introduced
PauseOnScrollListener(instead ofOnScrollSmartOptions) for convenient pause/resume ImageLoader on scroll/fling in list views (#106) - Prevented consuming of lot of memory by cacheKeysForImageViews (#108)
- Introduced
DisplayImageOptions.bitmapConfig(Bitmap.Config)(#101) - Introduced
DisplayImageOptions.delayBeforeLoading(int)(#103) - Introduced
OnScrollSmartOptionsfor convenient control of loading delay on fling in ListViews, GridViews - Added
FadeInBitmapDisplayer - Prevented recycling of using Bitmap (#101)
- Introduced
ImageLoaderConfiguration.tasksProcessingOrder(QueueProcessingType)(#89) - Added
MemoryCacheUtilfor work with memory cache - Fixed calculation of size the original image is needed scale to (#93)
- Allowed to create multiple
ImageLoaderinstances (#92)
- Prevented showing wrong bitmap in reused view (#85)
- Fixed bug "double displaying" if image is cached in memory
- Prevented "MissingFormatWidthException" (#88)
- Changed API: Renaming:
ImageScaleType.POWER_OF_2->IN_SAMPLE_POWER_OF_2ImageScaleType.EXACT->IN_SAMPLE_INT
- Introduced
ImageScaleType.EXACTLYandImageScaleType.EXACTLY_STRETCHED - Prevented
ImageLoadingListenercallbacks firing and displaying image in view after ImageLoader was stopped - Fixed bug of calculation of original image scale for decoding
- Introduced
ImageLoader.loadImage(...)which loads image, decodes it to Bitmap and returns Bitmap in callback (#51) - Avoided unnecessary image downloads (#44)
- Changed API: Changed
FileNameGeneratorto interface (instead of abstract class) - Introduced
BitmapDisplayerandDisplayImageOptions.displayer(...) - Multithread displaying of cached images (instead of single-thread)
- Correctly handle UTF-8 symbols and spaces in image URL (#31)
- Changed API:
- Removed
DisplayImageOptions.transform() - Changed
FileNameGeneratorto abstract class (instead of interface)
- Removed
- Fire
ImageLoadingListenercallbacks if image URI is null