Powerful and flexible library for loading, caching and displaying images on Android.

Overview

Logo Universal Image Loader Build Status Maven Central

The great ancestor of modern image-loading libraries :)
UIL 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.

Screenshot

Project News

  • Really have no time for development... so I stop project maintaining since Nov 27 :(
  • UIL [27.11.2011 - 27.11.2015]
  • Thanks to all developers for your support :)

Features

  • Multi-thread image loading (async or sync)
  • Wide customization of ImageLoader's configuration (thread executors, downloader, decoder, memory and disk cache, display image options, etc.)
  • Many customization options for every display image call (stub images, caching switch, decoding options, Bitmap processing and displaying, etc.)
  • Image caching in memory and/or on disk (device's file system or SD card)
  • Listening loading process (including downloading progress)

Android 4.1+ support

Downloads

Documentation

Usage

Dependency

implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

Acceptable URIs examples

"http://site.com/image.png" // from Web
"file:///mnt/sdcard/image.png" // from SD card
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
"content://media/external/images/media/13" // from content provider
"content://media/external/video/media/13" // from content provider (video thumbnail)
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)

NOTE: Use drawable:// only if you really need it! Always consider the native way to load drawables - ImageView.setImageResource(...) instead of using of ImageLoader.

Simple

ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleton instance
// Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view 
//	which implements ImageAware interface)
imageLoader.displayImage(imageUri, imageView);
// Load image, decode it to Bitmap and return Bitmap to callback
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
	@Override
	public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
		// Do whatever you want with Bitmap
	}
});
// Load image, decode it to Bitmap and return Bitmap synchronously
Bitmap bmp = imageLoader.loadImageSync(imageUri);

Complete

// Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view 
//	which implements ImageAware interface)
imageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {
	@Override
	public void onLoadingStarted(String imageUri, View view) {
		...
	}
	@Override
	public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
		...
	}
	@Override
	public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
		...
	}
	@Override
	public void onLoadingCancelled(String imageUri, View view) {
		...
	}
}, new ImageLoadingProgressListener() {
	@Override
	public void onProgressUpdate(String imageUri, View view, int current, int total) {
		...
	}
});
// Load image, decode it to Bitmap and return Bitmap to callback
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {
	@Override
	public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
		// Do whatever you want with Bitmap
	}
});
// Load image, decode it to Bitmap and return Bitmap synchronously
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
Bitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);

Load & Display Task Flow

Task Flow

Applications using Universal Image Loader

MediaHouse, UPnP/DLNA Browser | Prezzi Benzina (AndroidFuel) | ROM Toolbox Lite, Pro | Stadium Astro | Chef Astro | Sporee - Live Soccer Scores | EyeEm - Photo Filter Camera | Topface - meeting is easy | reddit is fun | Diaro - personal diary | Meetup | Vingle - Magazines by Fans | Anime Music Radio | WidgetLocker Theme Viewer | ShortBlogger for Tumblr | SnapDish Food Camera | Twitch | TVShow Time, TV show guide | Planning Center Services | Lapse It | My Cloud Player for SoundCloud | SoundTracking | LoopLR Social Video | Hír24 | Immobilien Scout24 | Lieferheld - Pizza Pasta Sushi | Loocator: free sex datings | 벨팡-개편 이벤트,컬러링,벨소리,무료,최신가요,링투유 | Streambels AirPlay/DLNA Player | Ship Mate - All Cruise Lines | Disk & Storage Analyzer | 糗事百科 | Balance BY | Anti Theft Alarm - Security | XiiaLive™ - Internet Radio | Bandsintown Concerts | Save As Web Archive | MCPE STORE -Download MCPE file | All-In-One Toolbox (29 Tools) | Zaim | Calculator Plus Free | Truedialer by Truecaller | DoggCatcher Podcast Player | PingTools Network Utilities | The Traveler | minube: travel photo album | Wear Store for Wear Apps | Cast Store for Chromecast Apps | WebMoney Keeper

Donation

You can support the project and thank the author for his hard work :)

  • PayPal - nostra.uil[at]gmail[dot]com

Alternative libraries

License

Copyright 2011-2015 Sergey Tarasevich

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Can't load image from Content Provider

    Can't load image from Content Provider

    Hello,

    I'm having a weird problem. I have two apks, one is a Content Provider and the other consumes the data. The following code in the consumer does not work:

    imageLoader.displayImage("content://com.risesoftware.coloroos_animals/assets/aa.png", imgvw_page);
    

    The error is :

    E/ImageLoader﹕ Image can't be decoded [content://com.risesoftware.coloroos_animals/assets/aa.png_1000x1000]
    

    but the following code DOES work :

    Uri theUri = Uri.parse("content://com.risesoftware.coloroos_animals/assets/aa.png");
    InputStream inputStream = null;
    inputStream = m_context.getContentResolver().openInputStream(theUri);
    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
    imgvw_page.setImageBitmap(bitmap);
    

    I looked through BaseImageDownloader and the code is virtually identical.

    Problem 
    opened by MikeWallaceDev 36
  • [1.8.0] memoryCacheExtraOptions affixes the values to the Uri (https)

    [1.8.0] memoryCacheExtraOptions affixes the values to the Uri (https)

    I'm using .memoryCacheExtraOptions(512, 512) I'm not sure if this is the desired effect but by doing this when performing webrequests it now affixes the size to the end of the image.

    https://d3jpl91pxevbkh.cloudfront.net/notha/image/upload/v1360769665/1.png becomes https://d3jpl91pxevbkh.cloudfront.net/notha/image/upload/v1360769665/1.png_512x512 Which of course fails loading.

    Cheers, Chris

    Problem 
    opened by chrisjenx 25
  • images display wrong

    images display wrong

    I am loading 5 images..when 1st images get loaded it will be displayed in 1st imageview and randomly in ant one of others imageviews. after loading all images it gradually loads other images and get placed.

        public class PhotoGridAdapter extends BaseAdapter {
    
        private Context mContext;
        private LayoutInflater infalter;
        private ArrayList<WallPhoto> data = new ArrayList<WallPhoto>();
        ImageLoader imageLoader;
    
        public PhotoGridAdapter(Context c) {
            infalter = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mContext = c;
    
            DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                    .cacheInMemory()
                    .cacheOnDisc()
                    .build();
            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mContext)
                    .memoryCache(new WeakMemoryCache())
                    .defaultDisplayImageOptions(defaultOptions)
                    .build();
            imageLoader = ImageLoader.getInstance();
            imageLoader.init(config);
        }
    
        @Override
        public int getCount() {
            return data.size();
        }
    
        @Override
        public WallPhoto getItem(int position) {
    
            return data.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        public void addAll(ArrayList<WallPhoto> files) {
    
            try {
                this.data.clear();
                this.data.addAll(files);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            notifyDataSetChanged();
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
            ViewHolder holder;
            if (convertView == null) {
                convertView = infalter.inflate(R.layout.photo_item, null);
                holder = new ViewHolder();
    
                holder.imgPhoto = (ImageView) convertView.findViewById(R.id.imgMenuIcon);
    
                convertView.setTag(holder);
    
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
    
            try {
                imageLoader.displayImage(data.get(position).url, holder.imgPhoto);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return convertView;
        }
    
        public class ViewHolder {
            ImageView imgPhoto;
        }
        }
    
    Problem 
    opened by bhavesh-hirpara 25
  • OutOfMemoryError when I download Images from internet

    OutOfMemoryError when I download Images from internet

    I have listView in which I display images , this is a snippet from Adapters' getView method

                ImageView imageView = (ImageView) v.findViewById(R.id.ivSmallImage);
        File cacheDir = StorageUtils.getOwnCacheDirectory(mContext, "alrawda/Cache");
        ImageLoader imageLoader = ImageLoader.getInstance();
    
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mContext)
            .threadPoolSize(3)
            .threadPriority(Thread.NORM_PRIORITY - 2)
            .memoryCache(new UsingFreqLimitedMemoryCache(2000000))
            .memoryCacheSize(1500000) // 1.5 Mb
    
            .denyCacheImageMultipleSizesInMemory()
            .discCache(new UnlimitedDiscCache(cacheDir))
            .discCacheFileNameGenerator(new Md5FileNameGenerator())
            .enableLogging() // Not necessary in common
    
    
            .build();
        imageLoader.init(config);
    
        options = new DisplayImageOptions.Builder()
    
        .showStubImage(R.drawable.stub_image)
        .cacheInMemory()
        .cacheOnDisc()
        .build();
        final ProgressBar spinner = new ProgressBar(mContext);
        imageLoader.displayImage(o.getSmallImage(), imageView,options,new ImageLoadingListener() {
    
            @Override
            public void onLoadingStarted() {
                spinner.setVisibility(View.VISIBLE);
    
            }
    
            @Override
            public void onLoadingFailed(FailReason failReason) {
                spinner.setVisibility(View.INVISIBLE);
    
            }
    
            @Override
            public void onLoadingComplete() {
                spinner.setVisibility(View.INVISIBLE);
    
            }
    
            @Override
            public void onLoadingCancelled() {
    
            }
        });
    

    After some images displayed , the Logcat shows me an error :

    07-12 18:01:05.885: E/dalvikvm-heap(5680): Out of memory on a 1120016-byte allocation. 07-12 18:01:05.895: I/dalvikvm(5680): "Thread-9724" prio=3 tid=14 RUNNABLE 07-12 18:01:05.950: I/dalvikvm(5680): | group="main" sCount=0 dsCount=0 obj=0x419b7e98 self=0xc2c698 07-12 18:01:05.950: I/dalvikvm(5680): | sysTid=5709 nice=13 sched=0/0 cgrp=bg_non_interactive handle=12568832 07-12 18:01:05.950: I/dalvikvm(5680): | schedstat=( 4136736133 1474479795 2225 ) utm=383 stm=30 core=0 07-12 18:01:05.970: I/dalvikvm(5680): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 07-12 18:01:05.970: I/dalvikvm(5680): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587) 07-12 18:01:05.975: I/dalvikvm(5680): at com.nostra13.universalimageloader.core.ImageDecoder.decode(ImageDecoder.java:61) 07-12 18:01:05.990: I/dalvikvm(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeWithOOMHandling(LoadAndDisplayImageTask.java:163) 07-12 18:01:05.995: I/dalvikvm(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:150) 07-12 18:01:06.000: I/dalvikvm(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:104) 07-12 18:01:06.005: I/dalvikvm(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:58) 07-12 18:01:06.010: I/dalvikvm(5680): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) 07-12 18:01:06.030: I/dalvikvm(5680): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 07-12 18:01:06.030: I/dalvikvm(5680): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 07-12 18:01:06.035: I/dalvikvm(5680): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 07-12 18:01:06.040: I/dalvikvm(5680): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 07-12 18:01:06.045: I/dalvikvm(5680): at java.lang.Thread.run(Thread.java:856) 07-12 18:01:06.055: D/skia(5680): --- decoder->decode returned false 07-12 18:01:06.095: E/ImageLoader(5680): null 07-12 18:01:06.095: E/ImageLoader(5680): java.lang.OutOfMemoryError 07-12 18:01:06.095: E/ImageLoader(5680): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 07-12 18:01:06.095: E/ImageLoader(5680): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587) 07-12 18:01:06.095: E/ImageLoader(5680): at com.nostra13.universalimageloader.core.ImageDecoder.decode(ImageDecoder.java:61) 07-12 18:01:06.095: E/ImageLoader(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeWithOOMHandling(LoadAndDisplayImageTask.java:163) 07-12 18:01:06.095: E/ImageLoader(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:150) 07-12 18:01:06.095: E/ImageLoader(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:104) 07-12 18:01:06.095: E/ImageLoader(5680): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:58) 07-12 18:01:06.095: E/ImageLoader(5680): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) 07-12 18:01:06.095: E/ImageLoader(5680): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 07-12 18:01:06.095: E/ImageLoader(5680): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 07-12 18:01:06.095: E/ImageLoader(5680): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 07-12 18:01:06.095: E/ImageLoader(5680): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 07-12 18:01:06.095: E/ImageLoader(5680): at java.lang.Thread.run(Thread.java:856) 07-12 18:01:06.180: D/dalvikvm(5680): GC_EXPLICIT freed 54K, 7% free 61470K/65479K, paused 3ms+16ms

    How can I get out from this error ,

    Bug 
    opened by muhannad-alhariri 23
  • Bug when loadImage into RemoteViewsFactory

    Bug when loadImage into RemoteViewsFactory

    bug http://prntscr.com/vez6f

        File cacheDir = new File(WidgetProvider.IMG_PATH);
                DisplayImageOptions optionsWithFakeDisplayer = new DisplayImageOptions.Builder()
                        .displayer(new FadeInBitmapDisplayer(2000)).cacheOnDisc()
                        .showImageForEmptyUri(R.drawable.ic_launcher)
                        .showStubImage(R.drawable.ic_launcher).build();
    
                ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                        this).threadPoolSize(3)
                        .threadPriority(Thread.NORM_PRIORITY - 1)
                        .denyCacheImageMultipleSizesInMemory().offOutOfMemoryHandling()
                        .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
                        .discCache(new UnlimitedDiscCache(cacheDir))
                        .defaultDisplayImageOptions(optionsWithFakeDisplayer) 
                        .enableLogging().build();
                ImageLoader.getInstance().init(config);
    
    ////////////////////////
    public class ClansListViewFactory implements
            RemoteViewsService.RemoteViewsFactory {
    
        @Override
        public RemoteViews getViewAt(int position) {
            row = null;
            row = new RemoteViews(context.getPackageName(),
                    R.layout.clans_clan_thumbnail);
    
            if(arrayList != null && !arrayList.isEmpty()){
                  ImageLoader.getInstance().loadImage(arrayList.get(position).getClansIconSrc(),
                        new SimpleImageLoadingListener() {
    
                            @Override
                            public void onLoadingComplete(String imageUri,
                                    View view, Bitmap loadedImage) {
                row.setImageViewBitmap(R.id.clan_icon,loadedImage);
                                super.onLoadingComplete(imageUri, view, loadedImage);
                            }
                        });
    
    
            }
    
            return row;
        }
    

    it is listview factory for widget ImageLoader work well into another activity please help

    Problem 
    opened by daimonkor 19
  • De/Encoding for File URI image load problem

    De/Encoding for File URI image load problem

    For an image file: /storage/sdcard0/groupurchase/cache/http%3A%2F%2Fd2.lashouimg.com%2Fzt_mobile_220%2F201211%2F29%2F135417696321262100.jpg

    imageLoader tries to load an decoded file path which is incorrect:

    02-25 13:20:51.085: E/ImageLoader(27155): java.io.FileNotFoundException: /storage/sdcard0/groupurchase/cache/http:/d2.lashouimg.com/zt_mobile_220/201211/29/135417696321262100.jpg: open failed: ENOENT (No such file or directory)
    

    It should keep the encoded string as it is, and read by stream.

    The problem is caused by imageloader code below:

    final class ImageLoadingInfo {
    ...
        public ImageLoadingInfo(String uri, ImageView imageView, ImageSize targetSize, DisplayImageOptions options, ImageLoadingListener listener, ReentrantLock loadFromUriLock) {
            this.uri = Uri.encode(uri, "@#&=*+-_.,:!?()/~'%");
            ...
        }
    }
    
    Bug 
    opened by zoularry 18
  • Adding a progress callback for downloaded procent

    Adding a progress callback for downloaded procent

    Hi, and thank you for your wonderful library. Like title say I want to implement a ProgressDialog which show the current progress in % of download completed

    Feature 
    opened by pr0t3us 18
  • loadImageSync return null

    loadImageSync return null

    hello, guys. why when i use "loadImageSync" , it returned null.

    ImageLoader imageLoader = ImageLoader.getInstance();
    Bitmap bitmap =  imageLoader.loadImageSync("http://thumb.dongtw.com/?width=240&height=180&url=http%3A%2F%2Fs2.imgs.cc%2Fimg%2Fjdr4HwY.jpg");
    imageView.setImageBitmap(bitmap);
    bitmap is null, 
    

    but when i use

    imageLoader.displayImage("http://thumb.dongtw.com/?width=320&height=180&url=http%3A%2F%2Fs2.imgs.cc%2Fimg%2Fjdr4HwY.jpg", imageView);
    

    it worked well. so why this happened, thx, :)

    Problem 
    opened by saltcoffee 17
  • Bug own cache dir

    Bug own cache dir

    File cacheDir = StorageUtils.getOwnCacheDirectory(context, "UniversalImageLoader/Cache");

            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .memoryCacheExtraOptions(480, 800) // max width, max height
        .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75) // Can slow ImageLoader, use it carefully (Better don't use it)
        .threadPoolSize(3)
        .threadPriority(Thread.NORM_PRIORITY - 1)
        .denyCacheImageMultipleSizesInMemory()
        .offOutOfMemoryHandling()
        .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation
        .discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
        .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
        .imageDownloader(new URLConnectionImageDownloader(5 * 1000, 20 * 1000)) // connectTimeout (5 s), readTimeout (20 s)
        .tasksProcessingOrder(QueueProcessingType.FIFO)
    
        .enableLogging()
        .build();
    
    
        ImageLoader.getInstance().init(config);
    
        optionsWithFakeDisplayer = new DisplayImageOptions.Builder().displayer(new FakeBitmapDisplayer()).cacheOnDisc().build();
    

    try this code

    File cacheDir = StorageUtils.getOwnCacheDirectory(context, "UniversalImageLoader/Cache");
    optionsWithFakeDisplayer = new DisplayImageOptions.Builder().displayer(new FakeBitmapDisplayer()).cacheInMemory (). cacheOnDisc().build();
    
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .threadPoolSize(3)
        .threadPriority(Thread.NORM_PRIORITY - 1)
        .denyCacheImageMultipleSizesInMemory()
        .offOutOfMemoryHandling()
        .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation
        .discCache(new UnlimitedDiscCache(cacheDir)).defaultDisplayImageOptions(optionsWithFakeDisplayer) // You can pass your own disc cache implementation
    
    
        .enableLogging()
        .build();
    
    ImageLoader.getInstance().init(config);
    

    UILWidgetProvider.java file modified (read up), but cache recorded to default external cache dir app (Android/data/....) Please fix it or help me)))

    Problem 
    opened by daimonkor 17
  • Cannot load image from the same uri twice

    Cannot load image from the same uri twice

    EXAMPLE:

    1. you have three image view objects:
       imageView1 
       imageView2 
       imageView3
    
    1. you have two image sources: http://server.com/a.jpg and http://server.com/b.jpg
    2. than you need to download:
        http://server.com/a.jpg => imageView1
        http://server.com/a.jpg => imageView2
        http://server.com/b.jpg => imageView3
    

    As a result of operations from above you will get:

        imageView1 (has image)
        imageView2 (no image - cancelled)
        imageView3 (has image)
    

    How can I solve this issue?

    P.S. Do I have any possibility to find that

       a.jpg
    

    in the memory or disc cache somehow?

    opened by ddmytrenko 16
  • How to process bitmap before caching?

    How to process bitmap before caching?

    For a subset of the images that I'm downloading, I want to be able to crop the image to a circle. I want it to be done on download and before caching, rather than every time the image is displayed.

    Is there some way to do this and have the library cache the processed image rather than what it fetches from the server?

    I've seen that DisplayImageOptions has a preprocessor option, but it wouldn't be applying the change directly to the cached image, would it? Would I have to extend the BaseImageDecoder class?

    Thanks a bunch!

    Question 
    opened by ankushg 16
  • Uncaught translation error: com.android.dx.cf.code.SimException

    Uncaught translation error: com.android.dx.cf.code.SimException

    build output: Uncaught translation error: com.android.dx.cf.code.SimException: ERROR in com.nostra13.universalimageloader.core.ImageLoaderConfiguration.:(Lcom/nostra13/universalimageloader/core/ImageLoaderConfiguration$Builder;)V: invalid opcode ba - invokedynamic requires --min-sdk-version >= 26 (currently 13)

    how to solve the problem

    opened by Fat-Ting 0
  • Improve GRADLE build Performance

    Improve GRADLE build Performance

    Parallel builds. This project contains multiple modules. Parallel builds can improve the build speed by executing tasks in parallel. We can enable this feature by setting org.gradle.parallel=true.

    Configuration on demand. Configuration on demand tells Gradle to configure modules that only are relevant to the requested tasks instead of configuring all of them. We can enable this feature by setting org.gradle.configureondemand=true.

    gradle caching. Shared caches can reduce the number of tasks you need to execute by reusing outputs already generated elsewhere. This can significantly decrease build times. We can enable this feature by setting org.gradle.caching=true.

    ===================== If there are any inappropriate modifications in this PR, please give me a reply and I will change them.

    opened by i-Taozi 0
Owner
Sergey Tarasevich
Clean coder
Sergey Tarasevich
A powerful image downloading and caching library for Android

Picasso A powerful image downloading and caching library for Android For more information please see the website Download Download the latest AAR from

Square 18.4k Jan 6, 2023
An Android view for displaying repeated continuous side scrolling images. This can be used to create a parallax animation effect.

Scrolling Image View An Android view for displaying repeated continuous side scrolling images. This can be used to create a parallax animation effect.

Q42 1.8k Dec 27, 2022
🍂 Jetpack Compose image loading library which can fetch and display network images using Glide, Coil, and Fresco.

?? Jetpack Compose image loading library which can fetch and display network images using Glide, Coil, and Fresco.

Jaewoong Eum 1.4k Jan 2, 2023
Library to handle asynchronous image loading on Android.

WebImageLoader WebImageLoader is a library designed to take to hassle out of handling images on the web. It has the following features: Images are dow

Alexander Blom 102 Dec 22, 2022
An Android library for managing images and the memory they use.

Fresco Fresco is a powerful system for displaying images in Android applications. Fresco takes care of image loading and display, so you don't have to

Facebook 16.9k Jan 8, 2023
Andorid library that loads images asynchronously into cache using a thread pool

AndroidImageLoader AndroidImageLoader is a fork of the Image Loader component in libs-for-android. The AndroidImageLoader is an Android library that h

David Wu 63 Feb 19, 2019
Android Asynchronous Networking and Image Loading

Android Asynchronous Networking and Image Loading Download Maven Git Features Kotlin coroutine/suspend support Asynchronously download: Images into Im

Koushik Dutta 6.3k Dec 27, 2022
Image loading for Android backed by Kotlin Coroutines.

An image loading library for Android backed by Kotlin Coroutines. Coil is: Fast: Coil performs a number of optimizations including memory and disk cac

Coil 8.8k Jan 8, 2023
Android ImageView that handles animated GIF images

GifImageView Android ImageView that handles Animated GIF images Usage In your build.gradle file: dependencies { compile 'com.felipecsl:gifimageview:

Felipe Lima 1.1k Dec 27, 2022
Media Picker is an Android Libary that lets you to select multiple images or video

Media Picker Please let me know if your application go to production via this link Media Picker is an Android Libary that lets you to select multiple

Abdullah Alhazmy 264 Nov 10, 2022
Load images using Glide

Glide_Demo Load images using Glide Image used private val image = "https://cdn.pixabay.com/photo/2018/05/03/21/49/android-3372580_1280.png" Add Glide

Daniel Kago K 0 Nov 1, 2021
Splash - Wanted an app that displays images from Unsplash, well here it is

Splash - Wanted an app that displays images from Unsplash, well here it is

Bamidele Ajewole 2 Apr 26, 2022
Photo picker library for android. Let's you pick photos directly from files, or navigate to camera or gallery.

ChiliPhotoPicker Made with ❤️ by Chili Labs. Library made without DataBinding, RxJava and image loading libraries, to give you opportunity to use it w

Chili Labs 394 Jan 2, 2023
An Android transformation library providing a variety of image transformations for Glide.

Glide Transformations An Android transformation library providing a variety of image transformations for Glide. Please feel free to use this. Are you

Daichi Furiya 9.7k Dec 30, 2022
An android image compression library.

Compressor Compressor is a lightweight and powerful android image compression library. Compressor will allow you to compress large photos into smaller

Zetra 6.7k Jan 9, 2023
An Android transformation library providing a variety of image transformations for Picasso

Picasso Transformations An Android transformation library providing a variety of image transformations for Picasso. Please feel free to use this. Are

Daichi Furiya 1.7k Jan 5, 2023
Glide Bitmap Pool is a memory management library for reusing the bitmap memory

Glide Bitmap Pool About Glide Bitmap Pool Glide Bitmap Pool is a memory management library for reusing the bitmap memory. As it reuses bitmap memory ,

AMIT SHEKHAR 573 Dec 31, 2022
Compose Image library for Kotlin Multiplatform.

Compose ImageLoader Compose Image library for Kotlin Multiplatform. Setup Add the dependency in your common module's commonMain sourceSet kotlin {

Seiko 45 Dec 29, 2022
Adds touch functionality to Android ImageView.

TouchImageView for Android Capabilities TouchImageView extends ImageView and supports all of ImageView’s functionality. In addition, TouchImageView ad

Michael Ortiz 2.6k Jan 1, 2023