[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3986":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},3986,"Android-Universal-Image-Loader","nostra13\u002FAndroid-Universal-Image-Loader","nostra13","Powerful and flexible library for loading, caching and displaying images on Android.","",null,"Java",16855,6023,1315,455,0,1,4,9,45,"Apache License 2.0",false,"master",true,[],"2026-06-12 02:00:57","# ![Logo](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fraw\u002Fmaster\u002Fsample\u002Fsrc\u002Fmain\u002Fres\u002Fdrawable-mdpi\u002Fic_launcher.png) Universal Image Loader [![Build Status](https:\u002F\u002Ftravis-ci.org\u002Fnostra13\u002FAndroid-Universal-Image-Loader.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Fnostra13\u002FAndroid-Universal-Image-Loader) [![Maven Central](https:\u002F\u002Fmaven-badges.herokuapp.com\u002Fmaven-central\u002Fcom.nostra13.universalimageloader\u002Funiversal-image-loader\u002Fbadge.svg)](https:\u002F\u002Fmaven-badges.herokuapp.com\u002Fmaven-central\u002Fcom.nostra13.universalimageloader\u002Funiversal-image-loader)\n\nThe great ancestor of modern image-loading libraries :)  \nUIL aims to provide a powerful, flexible and highly customizable instrument for image loading, caching and displaying. It provides a lot of configuration options and good control over the image loading and caching process.\n\n![Screenshot](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fraw\u002Fmaster\u002FUniversalImageLoader.png)\n\n## Project News \n * Really have no time for development... so I stop project maintaining since Nov 27 :(\n * UIL [27.11.2011 - 27.11.2015]\n * Thanks to all developers for your support :)\n\n## Features\n * Multi-thread image loading (async or sync)\n * Wide customization of ImageLoader's configuration (thread executors, downloader, decoder, memory and disk cache, display image options, etc.)\n * Many customization options for every display image call (stub images, caching switch, decoding options, Bitmap processing and displaying, etc.)\n * Image caching in memory and\u002For on disk (device's file system or SD card)\n * Listening loading process (including downloading progress)\n\nAndroid 4.1+ support\n\n## Downloads\n * **[universal-image-loader-1.9.5.jar](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fraw\u002Fmaster\u002Fdownloads\u002Funiversal-image-loader-1.9.5.jar)**\n * [\u003Cimg src=\"https:\u002F\u002Fplay.google.com\u002Fintl\u002Fen_us\u002Fbadges\u002Fimages\u002Fapps\u002Fen-play-badge.png\" height=\"45px\" \u002F>](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.nostra13.universalimageloader.sample) [![QR Code](https:\u002F\u002Flh3.ggpht.com\u002FcsXEddxiLgQ6FxckefjQnP1PVugbaAYOdcuTa3vVtGV1PlWbFu2dYggoH8rI1w2RdEz1=w50)](http:\u002F\u002Fchart.apis.google.com\u002Fchart?chs=300x300&cht=qr&chld=|1&chl=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.nostra13.universalimageloader.sample) [\u003Cimg src=\"https:\u002F\u002Fwww.javatpoint.com\u002Ffullformpages\u002Fimages\u002Fapk.png\" height=\"45px\" \u002F>](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fraw\u002Fmaster\u002Fdownloads\u002Funiversal-image-loader-sample-1.9.5.apk)\n\n## [Documentation](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fwiki)\n * **[Quick Setup](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fwiki\u002FQuick-Setup)**\n * **[Configuration](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fwiki\u002FConfiguration)**\n * **[Display Options](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fwiki\u002FDisplay-Options)**\n * [Useful Info](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fwiki\u002FUseful-Info) - Read it before asking a question\n * [User Support](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fwiki\u002FUser-Support) - Read it before creating new issue\n * [Sample project](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Ftree\u002Fmaster\u002Fsample) - Learn it to understand the right way of library usage\n * [ChangeLog](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fblob\u002Fmaster\u002FCHANGELOG.md) - Info about API changes is here\n\n## Usage\n\n### Dependency\n\n```\nimplementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'\n```\n\n### Acceptable URIs examples\n``` java\n\"http:\u002F\u002Fsite.com\u002Fimage.png\" \u002F\u002F from Web\n\"file:\u002F\u002F\u002Fmnt\u002Fsdcard\u002Fimage.png\" \u002F\u002F from SD card\n\"file:\u002F\u002F\u002Fmnt\u002Fsdcard\u002Fvideo.mp4\" \u002F\u002F from SD card (video thumbnail)\n\"content:\u002F\u002Fmedia\u002Fexternal\u002Fimages\u002Fmedia\u002F13\" \u002F\u002F from content provider\n\"content:\u002F\u002Fmedia\u002Fexternal\u002Fvideo\u002Fmedia\u002F13\" \u002F\u002F from content provider (video thumbnail)\n\"assets:\u002F\u002Fimage.png\" \u002F\u002F from assets\n\"drawable:\u002F\u002F\" + R.drawable.img \u002F\u002F from drawables (non-9patch images)\n```\n**NOTE:** Use `drawable:\u002F\u002F` only if you really need it! Always **consider the native way** to load drawables - `ImageView.setImageResource(...)` instead of using of `ImageLoader`.\n\n### Simple\n``` java\nImageLoader imageLoader = ImageLoader.getInstance(); \u002F\u002F Get singleton instance\n```\n``` java\n\u002F\u002F Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view \n\u002F\u002F\twhich implements ImageAware interface)\nimageLoader.displayImage(imageUri, imageView);\n```\n``` java\n\u002F\u002F Load image, decode it to Bitmap and return Bitmap to callback\nimageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {\n\t@Override\n\tpublic void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {\n\t\t\u002F\u002F Do whatever you want with Bitmap\n\t}\n});\n```\n``` java\n\u002F\u002F Load image, decode it to Bitmap and return Bitmap synchronously\nBitmap bmp = imageLoader.loadImageSync(imageUri);\n```\n\n### Complete\n``` java\n\u002F\u002F Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view \n\u002F\u002F\twhich implements ImageAware interface)\nimageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {\n\t@Override\n\tpublic void onLoadingStarted(String imageUri, View view) {\n\t\t...\n\t}\n\t@Override\n\tpublic void onLoadingFailed(String imageUri, View view, FailReason failReason) {\n\t\t...\n\t}\n\t@Override\n\tpublic void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {\n\t\t...\n\t}\n\t@Override\n\tpublic void onLoadingCancelled(String imageUri, View view) {\n\t\t...\n\t}\n}, new ImageLoadingProgressListener() {\n\t@Override\n\tpublic void onProgressUpdate(String imageUri, View view, int current, int total) {\n\t\t...\n\t}\n});\n```\n``` java\n\u002F\u002F Load image, decode it to Bitmap and return Bitmap to callback\nImageSize targetSize = new ImageSize(80, 50); \u002F\u002F result Bitmap will be fit to this size\nimageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {\n\t@Override\n\tpublic void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {\n\t\t\u002F\u002F Do whatever you want with Bitmap\n\t}\n});\n```\n``` java\n\u002F\u002F Load image, decode it to Bitmap and return Bitmap synchronously\nImageSize targetSize = new ImageSize(80, 50); \u002F\u002F result Bitmap will be fit to this size\nBitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);\n```\n\n## Load & Display Task Flow\n![Task Flow](https:\u002F\u002Fgithub.com\u002Fnostra13\u002FAndroid-Universal-Image-Loader\u002Fraw\u002Fmaster\u002Fwiki\u002FUIL_Flow.png)\n\n\n## Applications using Universal Image Loader\n**[MediaHouse, UPnP\u002FDLNA Browser](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.dbapp.android.mediahouse)** | **[Prezzi Benzina (AndroidFuel)](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=org.vernazza.androidfuel)** | **[ROM Toolbox Lite](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.jrummy.liberty.toolbox)**, [Pro](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.jrummy.liberty.toolboxpro) | [Stadium Astro](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.astro.stadium.activities) | [Chef Astro](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.sencha.test) | [Sporee - Live Soccer Scores](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.sporee.android) | **[EyeEm - Photo Filter Camera](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.baseapp.eyeem)** | **[Topface - meeting is easy](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.topface.topface)** | **[reddit is fun](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.andrewshu.android.reddit)** | **[Diaro - personal diary](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.pixelcrater.Diaro)** | **[Meetup](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.meetup)** | [Vingle - Magazines by Fans](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.vingle.android) | [Anime Music Radio](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.maxxt.animeradio) | [WidgetLocker Theme Viewer](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.companionfree.WLThemeViewer) | [ShortBlogger for Tumblr](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.luckydroid.tumblelog) | [SnapDish Food Camera](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.vuzz.snapdish) | **[Twitch](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=tv.twitch.android.viewer)** | [TVShow Time, TV show guide](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.tozelabs.tvshowtime) | [Planning Center Services](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.ministrycentered.PlanningCenter) | **[Lapse It](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.ui.LapseIt)** | [My Cloud Player for SoundCloud](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.mycloudplayers.mycloudplayer) | **[SoundTracking](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.schematiclabs.soundtracking)** | [LoopLR Social Video](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.looplr) | [Hír24](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=hu.sanomamedia.hir24) | **[Immobilien Scout24](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=de.is24.android)** | **[Lieferheld - Pizza Pasta Sushi](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=de.lieferheld.android)** | [Loocator: free sex datings](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.ivicode.loocator) | [벨팡-개편 이벤트,컬러링,벨소리,무료,최신가요,링투유](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.mediahubs.www) | [Streambels AirPlay\u002FDLNA Player](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.tuxera.streambels) | [Ship Mate - All Cruise Lines](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=shipmate.carnival) | [Disk & Storage Analyzer](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.mobile_infographics_tools.mydrive) | [糗事百科](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=qsbk.app) | [Balance BY](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.vladyud.balance) | **[Anti Theft Alarm - Security](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=br.com.verde.alarme)** | **[XiiaLive™ - Internet Radio](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.android.DroidLiveLite)** | **[Bandsintown Concerts](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.bandsintown)** | **[Save As Web Archive](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=jp.fuukiemonster.webmemo)** | [MCPE STORE -Download MCPE file](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.newidea.mcpestore) | **[All-In-One Toolbox (29 Tools)](http:\u002F\u002Faiotoolbox.com\u002F)** | [Zaim](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=net.zaim.android) | **[Calculator Plus Free](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.digitalchemy.calculator.freedecimal)** | [Truedialer by Truecaller](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.truecaller.phoneapp) | [DoggCatcher Podcast Player](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.snoggdoggler.android.applications.doggcatcher.v1_0) | [PingTools Network Utilities](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=ua.com.streamsoft.pingtools) | [The Traveler](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=edu.bsu.android.apps.traveler) | [minube: travel photo album](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.minube.app) | [Wear Store for Wear Apps](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=goko.ws2) | [Cast Store for Chromecast Apps](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=goko.gcs) | [WebMoney Keeper](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.webmoney.my)\n\n## Donation\nYou can support the project and thank the author for his hard work :)\n\n* **PayPal** - nostra.uil[at]gmail[dot]com\n\n## Alternative libraries\n\n * [Fresco](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Ffresco)\n * [Glide](https:\u002F\u002Fgithub.com\u002Fbumptech\u002Fglide)\n * [Picasso](https:\u002F\u002Fgithub.com\u002Fsquare\u002Fpicasso)\n * [Volley : ImageLoader](https:\u002F\u002Fandroid.googlesource.com\u002Fplatform\u002Fframeworks\u002Fvolley\u002F)\n","Android-Universal-Image-Loader 是一个用于加载、缓存和显示 Android 应用中图片的强大且灵活的库。该项目支持多线程异步或同步加载图片，并提供了丰富的配置选项，包括线程执行器、下载器、解码器、内存和磁盘缓存等，允许开发者根据具体需求定制图片加载过程。此外，它还支持在内存或设备文件系统（包括SD卡）上进行图片缓存，并能监听整个加载流程，包括下载进度。尽管项目已不再维护，但其设计思想和技术实现对需要高效处理图片资源的应用场景依然具有很高的参考价值，特别适合那些需要优化用户体验、减少网络请求开销的移动应用开发。",2,"2026-06-11 02:57:36","top_language"]