- Changed API:
ImageLoaderConfiguration.enableLogging()
->ImageLoaderConfiguration.writeDebugLogs()
- Fixed memory leak (#263)
- Changed API:
ImageLoaderConfiguration.discCacheExtraOptions(...)
->ImageLoaderConfiguration.discCacheExtraOptions(..., BitmapProcessor)
(#314) - Introduce
ImageLoaderConfiguration.memoryCacheSizePercentage(int)
(#279) - Introduced
DisplayImageOptions.cacheInMemory(boolean)
,.cacheOnDisc(boolean)
,.resetViewBeforeLoading(boolean)
(#252) - Added
LoadedFrom
flag toBitmapDisplayer.display(..., LoadedFrom)
about image source (#149, #239) - Added
L.disableLogging()
andL.enableLogging()
to off/on logs completely (#270) - Prevent image decoding if image is reused (#247)
- Not set cache dir on SD card if no appropriate permission (#311)
- Increased buffer size for image downlaods (8 KB -> 32 KB) (#249)
- Fixed bugs:
- Prevent recycling of cached in memory images (#259)
- ConcurrentModificationException in
LruMemoryCache
(#265) - File counting if cached files disappeared
LimitedDiscCache
(#316) - NPE for ImageView without LayoutParams (#272)
- NPE in
LoadAndDisplayImageTask
(#271) - NPE in ImageLoaderEngine (#301)
- RoundedBitmapDisplayer doesn't display round corner correctly for CENTER_CROP (#315)
- 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
LruMemoryCache
as default memory cache for API >= 9,LRULimitedMemoryCache
- for API < 9. Default memory cache size - 1/8 of available app memory. - Improved
LimitedDiscCache
andFuzzyKeyMemoryCache
performance - Fixed bugs:
.denyCacheImageMultipleSizesInMemory
doesn't work if own memory cache is setjava.lang.NoSuchMethodError
in sample app (#206)
- Changed API:
ImageDownloader.getStream***(URI, ...)
->ImageDownloader.getStream***(String, ...)
- Made
FailReason
as 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
Scheme
class - Fixed bugs:
- Changed API:
ImageLoader.denyNetworkDownloads()
->ImageLoader.denyNetworkDownloads(true)
ImageLoader.allowNetworkDownloads()
->ImageLoader.denyNetworkDownloads(false)
- Introduced
ImageLoader.denyNetworkDownloads(boolean)
- Introduced
ImageLoader.handleSlowNetwork(boolean)
.FlushedInsputStream
isn'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, ...)
ImageDownloader
became interface,URLConnectionImageDownloader
+ExtendedImageDownloader
->BaseImageDownloader
- Renaming:
FileUtil
->IoUtil
- Removed deprecated
ImageScaleType.POWER_OF_2
andImageScaleType.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_SCHEME
andFailReason.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
OnScrollSmartOptions
for convenient control of loading delay on fling in ListViews, GridViews - Added
FadeInBitmapDisplayer
- Prevented recycling of using Bitmap (#101)
- Introduced
ImageLoaderConfiguration.tasksProcessingOrder(QueueProcessingType)
(#89) - Added
MemoryCacheUtil
for work with memory cache - Fixed calculation of size the original image is needed scale to (#93)
- Allowed to create multiple
ImageLoader
instances (#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_2
ImageScaleType.EXACT
->IN_SAMPLE_INT
- Introduced
ImageScaleType.EXACTLY
andImageScaleType.EXACTLY_STRETCHED
- Prevented
ImageLoadingListener
callbacks 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
FileNameGenerator
to interface (instead of abstract class) - Introduced
BitmapDisplayer
andDisplayImageOptions.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
FileNameGenerator
to abstract class (instead of interface)
- Removed
- Fire
ImageLoadingListener
callbacks if image URI is null