Media Picker is an Android Libary that lets you to select multiple images or video

Overview

Media Picker

Codacy Badge

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 images, video or voice for Android 4.1 (API 16) +. You can report any issue on issues page. Note: If you speak Arabic, you can submit issues with Arabic language and I will check them. :)

NOTE


This build 2.x.x will break backward compatibility and there are a lot of changes to improve the performance and fix a lot of Leak memory issues, So please read below document carefully.

Installation


Maven

<dependency>
<groupId>net.alhazmy13.MediaPicker</groupId>
<artifactId>libary</artifactId>
<version>2.4.4</version>
</dependency>

Gradle

dependencies {
	implementation 'net.alhazmy13.MediaPicker:libary:2.4.4'
}

Usage


Images

After adding the library, you need to:

  1. Create an object from ImagePicker or VideoPicker
  2. Override onActivityResult to receive the path of image or videos.

Create an ImagePicker

You will need to create a new instance of ImagePicker. Once the instance are configured, you can call build().

        new ImagePicker.Builder(MainActivity.this)
                        .mode(ImagePicker.Mode.CAMERA_AND_GALLERY)
                        .compressLevel(ImagePicker.ComperesLevel.MEDIUM)
                        .directory(ImagePicker.Directory.DEFAULT)
                        .extension(ImagePicker.Extension.PNG)
                        .scale(600, 600)
                        .allowMultipleImages(false)
                        .enableDebuggingMode(true)
                        .build();

Override onActivityResult

In order to receive the path of image, you will need to override onActivityResult .

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == ImagePicker.IMAGE_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths = data.getStringArrayListExtra(ImagePicker.EXTRA_IMAGE_PATH);
            //Your Code
        }
    }

Additional Options

  • mode to select the mode, you can choose one of these CAMERA,GALLERY or CAMERA_AND_GALLERY
.mode(ImagePicker.Mode.CAMERA)
  • extension You can change the extension of image to PNG or JPG
.extension(ImagePicker.Extension.PNG)
  • compressLevel You can change the quality of image with three different levels HARD,MEDIUM, SOFT or NONE
.compressLevel(ImagePicker.ComperesLevel.MEDIUM)
  • directory You can pass the storage path, or select Directory.DEFAULT_DIR to keep the default path.
.directory(ImagePicker.Directory.DEFAULT)

//OR

.directory(Environment.getExternalStorageDirectory()+"/myFolder")
  • scale You can scale the image to a a minimum width and height. This will only be used if compressLevel is set. To avoid OutOfMemory issues, ensure this is used.
.scale(500, 500)
  • allowMultipleImages Extra used to select and return multiple images from gallery CANNOT select single image from gallery if this feature was enabled
	.allowMultipleImages(true)
  • enableDebuggingMode used to print Image Picker Log
	.enableDebuggingMode(true)
  • allowOnlineImages an option to allow the user to select any image from online resource ex: Google Drive (KNOWN ISSUE) if you enable this option then you cannot select multiple images
	.allowOnlineImages(true)

Create an VideoPicker

You will need to create a new instance of VideoPicker. Once the instance are configured, you can call build().

        new VideoPicker.Builder(MainActivity.this)
                        .mode(VideoPicker.Mode.CAMERA_AND_GALLERY)
                        .directory(VideoPicker.Directory.DEFAULT)
                        .extension(VideoPicker.Extension.MP4)
                        .enableDebuggingMode(true)
                        .build();

Override onActivityResult

In order to receive the path of videos, you will need to override onActivityResult .

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == VideoPicker.VIDEO_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths =  data.getStringArrayListExtra(VideoPicker.EXTRA_VIDEO_PATH);
            //Your Code
        }
    }

Additional Options

  • mode to select the mode, you can choose one of these CAMERA,GALLERY or CAMERA_AND_GALLERY
.mode(VideoPicker.Mode.CAMERA)
  • extension You can change the extension of video to MP4
.extension(VideoPicker.Extension.MP4)
  • directory You can pass the storage path, or select Directory.DEFAULT_DIR to keep the default path.
.directory(VideoPicker.Directory.DEFAULT)

//OR

.directory(Environment.getExternalStorageDirectory()+"/myFolder")
  • enableDebuggingMode used to print Video Picker Log
	.enableDebuggingMode(true)

RxJava 2 for MediaPicker

It's an extenstion that allow you to return an observable from ImagePickerBuilder or VideoPickerBuilder, all you need is to add below dependency and then return the observable from ImagePickerHelper || VideoPickerHelper class.

Gradle

dependencies {
  implementation 'io.reactivex.rxjava2:rxandroid:(Last_version)'
  implementation 'io.reactivex.rxjava2:rxjava:(Last_version)'
	implementation 'net.alhazmy13.MediaPicker:rxjava:(Last_version)'
}
  new ImagePickerHelper(
        new ImagePicker.Builder(Context)
                ...)
                .getObservable()
                .subscribe(....);

Theme the pickers

You can change the strings be overwriting below resources in your project.

    <string name="media_picker_select_from">Select From:</string>
    <string name="media_picker_camera">Camera</string>
    <string name="media_picker_gallery">Gallery</string>
    <string name="media_picker_ok">Ok</string>
    <string name="media_picker_cancel">Cancel</string>
    <string name="media_picker_some_permission_is_denied">Some Permission is Denied</string>
    <string name="media_picker_you_need_to_grant_access_to">You need to grant access to</string>
    <string name="media_picker_read_Write_external_storage"><![CDATA[Read & Write External Storage]]></string>
Comments
  • Only fullscreen opaque activities can request orientation Android 8

    Only fullscreen opaque activities can request orientation Android 8

    Caused by java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation at android.app.Activity.onCreate(Activity.java:1038) at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66) at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:297) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84) at net.alhazmy13.mediapicker.Image.ImageActivity.onCreate(ImageActivity.java:56) at android.app.Activity.performCreate(Activity.java:7174) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030) at android.app.ActivityThread.-wrap11(Unknown Source) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6938) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

    bug ReviewNeeded-BetaVersion 
    opened by SerhiiSolobaievUptech 14
  • java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.AlertDialog.isShowing()' on a null object reference

    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.AlertDialog.isShowing()' on a null object reference

    Process: com.sprent.customer.dev, PID: 24189 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.AlertDialog.isShowing()' on a null object reference at net.alhazmy13.mediapicker.Image.ImageActivity.onSaveInstanceState(ImageActivity.java:182) at android.app.Activity.performSaveInstanceState(Activity.java:1302) at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1289) at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:4088) at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3490) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3550) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

    opened by SerhiiSolobaievUptech 7
  •  Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

    Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

    (net.alhazmy13.mediapicker.Video.VideoActivity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2830) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2909) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1606) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6592) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769) Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation at android.app.Activity.onCreate(Activity.java:991) at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66) at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:321) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84) at net.alhazmy13.mediapicker.Video.VideoActivity.onCreate(VideoActivity.java:54) at android.app.Activity.performCreate(Activity.java:6984)

    opened by NerdFaisal404 6
  • #69 set request code in build

    #69 set request code in build

    This is my pull request for the issue #69

    • setup the requestCode in the builder (both image and video)
    • update the example app to test the custom request code
    opened by arnaud33200 6
  • startActivityForResult Never called in fragment

    startActivityForResult Never called in fragment

    I can't get startActivityForResult called in my fragment, only in the Activity containing the fragment, why does it happens? How can I handle this issue?

    help wanted question 
    opened by lorenzoPrimi 5
  • Image Picker From Google Drive Issue

    Image Picker From Google Drive Issue

    So I have been getting come crashes related to the URI being not found. I found this to happen when using the Image Picker and selecting a non image type file (ZIP, MP4). Whats odd is the onActivityResult returns a URI back but its not valid it contains a .jpg extension and returns the exception below when you try to open it into a input stream. Anyway to restrict google drive selection to photos only? Or is there a way to disable showing third party apps and just show the built in gallery app?

    Thank You

    Exception (I picked a .mp4 file from my google drive account):
    java.io.FileNotFoundException: /storage/emulated/0/mediapicker/images/ad220b5b-f716-42ae-ac6b-002879870f0f.jpg: open failed: ENOENT (No such file or directory)
    

    device-2017-12-21-112158

    bug 
    opened by mikemike396 4
  • java.lang.OutOfMemoryErrorFatal Exception: java.lang.RuntimeException An error occurred while executing doInBackground()

    java.lang.OutOfMemoryErrorFatal Exception: java.lang.RuntimeException An error occurred while executing doInBackground()

    Getting this crash ->

    Fatal Exception: java.lang.RuntimeException: An error occurred while executing doInBackground()
           at android.os.AsyncTask$3.done(AsyncTask.java:318)
           at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
           at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
           at java.util.concurrent.FutureTask.run(FutureTask.java:242)
           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
           at java.lang.Thread.run(Thread.java:762)
    Caused by java.lang.OutOfMemoryError: Failed to allocate a 63701004 byte allocation with 16777216 free bytes and 44MB until OOM
           at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
           at android.graphics.Bitmap.nativeCreate(Bitmap.java)
           at android.graphics.Bitmap.createBitmap(Bitmap.java:977)
           at android.graphics.Bitmap.createBitmap(Bitmap.java:948)
           at android.graphics.Bitmap.createBitmap(Bitmap.java:879)
           at net.alhazmy13.mediapicker.Utility.compressAndRotateIfNeeded(Utility.java:94)
           at net.alhazmy13.mediapicker.Image.ImageActivity$CompressImageTask.doInBackground(ImageActivity.java:388)
           at net.alhazmy13.mediapicker.Image.ImageActivity$CompressImageTask.doInBackground(ImageActivity.java:351)
           at android.os.AsyncTask$2.call(AsyncTask.java:304)
           at java.util.concurrent.FutureTask.run(FutureTask.java:237)
           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
           at java.lang.Thread.run(Thread.java:762)
    

    Location -> Utility.java line 94 net.alhazmy13.mediapicker.Utility.compressAndRotateIfNeeded

    Running this build ->
    compile 'net.alhazmy13.MediaPicker:libary:2.4.0'

    screen shot 2017-12-20 at 8 42 34 am

    help wanted 
    opened by mikemike396 4
  • Failed to resolve: MediaPicker:libary:unspecified

    Failed to resolve: MediaPicker:libary:unspecified

    I am trying to use the rx extension, but unfortunately Gradle fails to resolve the dependency with an error Failed to resolve: MediaPicker:libary:unspecified

    My dependencies:

    implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
    implementation 'net.alhazmy13.MediaPicker:rxjava:2.4.4'
    

    also tried adding implementation 'net.alhazmy13.MediaPicker:libary:2.4.4' with no success.

    opened by rafalzawadzki 3
  • Can't receive the onActivityResult in fragment

    Can't receive the onActivityResult in fragment

    Greetings, Dear Abdullah,

    This is an information maybe more than a bug, but the onActivityResult will fire inside fragment. Instead the main activity will receive the onActivityResult.

    Best regards. Abdulaziz Noor.

    opened by mtx62 3
  • Can't be able to Select Multipe Images

    Can't be able to Select Multipe Images

    when i try to select images from gallery i only can select 1 image and you have written in description that select Multiple image but i can't. im using Nexus 5 and with Marshmallow.

    enhancement 
    opened by UttamPanchasara 3
  • SDK 19+ External Storage (SD Card) Not working

    SDK 19+ External Storage (SD Card) Not working

    So I have noticed my app not getting images via the SD card. I tired it on the latest demo app (2.4.1 beta) and it doesnt work either, please see the video. This is a pixel 2 running API 26. It also happens on many other devices. You can see the crash log below for my personal app related to a null URI. Any thoughts? It appears to be an issue with this line

    if ("primary".equalsIgnoreCase(type)) {
         return Environment.getExternalStorageDirectory() + "/" + split[1];
    }
    

    screen shot 2018-07-24 at 9 34 25 am

    pickerexstoragenotworking

    screen shot 2018-07-24 at 9 31 36 am

    opened by mikemike396 2
  • Manifest merger failed with multiple errors

    Manifest merger failed with multiple errors

    Error: Attribute provider#androidx.core.content.FileProvider@authorities value=(app.mandobee.project.fileprovider) from AndroidManifest.xml:27:13-64 is also present at AndroidManifest.xml:24:13-60 value=(app.mandobee.project.provider). Suggestion: add 'tools:replace="android:authorities"' to element at AndroidManifest.xml:25:9-33:20 to override. MandoBee.app main manifest (this file), line 26 Error: Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/imagepicker_file_paths) from AndroidManifest.xml:32:17-63 is also present at AndroidManifest.xml:29:17-55 value=(@xml/provider_paths). Suggestion: add 'tools:replace="android:resource"' to element at AndroidManifest.xml to override. MandoBee.app main manifest (this file), line 31

    opened by MohamedMedhat2018 0
  • Unable to start activity

    Unable to start activity

    Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rizek.android.users/net.alhazmy13.gota.GotaActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)
           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2479)
           at android.app.ActivityThread.-wrap11(ActivityThread.java)
           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
           at android.os.Handler.dispatchMessage(Handler.java:102)
           at android.os.Looper.loop(Looper.java:148)
           at android.app.ActivityThread.main(ActivityThread.java:5421)
           at java.lang.reflect.Method.invoke(Method.java)
           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    
    
    opened by Arunachalamkalimuthu 0
  • Manifest merger failed

    Manifest merger failed

    Manifest merger failed : Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/image_picker_provider_paths) from [com.github.dhaval2404:imagepicker:1.6] AndroidManifest.xml:31:17-68
    	is also present at [net.alhazmy13.MediaPicker:libary:2.4.4] AndroidManifest.xml:29:17-55 value=(@xml/provider_paths).
    	Suggestion: add 'tools:replace="android:resource"' to <meta-data> element at AndroidManifest.xml to override.
    

    What should i do...?

    opened by DkKhan786 2
  • Performing pause of activity that is not resumed

    Performing pause of activity that is not resumed

    Hi

    I was testing on Galaxy Tab S5e (OS 9) Landscape Activity (fixed) I just started the camera and press back button or cancel. Then it was showing the error mentioned below. Each and every time.

    But it was working perfectly on phone. Please have a look

    using net.alhazmy13.MediaPicker:libary:2.4.4


    java.lang.RuntimeException: Performing pause of activity that is not resumed: {com.ds.bkashassessment/com.ds.bkashassessment.view.LoginActivity} at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4214) at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:4179) at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:45) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1959) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7080) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

    opened by mzijewel 0
Releases(2.4.4)
Owner
Abdullah Alhazmy
Addicted to learning | Sr. Software engineer | Founder @xpend | Co-Founder @Gwork-projects & @EmaanHq
Abdullah Alhazmy
Image Picker for Android 🤖

Image Picker for Android ??

Esa Firman 1k Dec 31, 2022
Powerful and flexible library for loading, caching and displaying images on Android.

Universal Image Loader The great ancestor of modern image-loading libraries :) UIL aims to provide a powerful, flexible and highly customizable instru

Sergey Tarasevich 16.8k Jan 8, 2023
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
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
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
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
🍂 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
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
An image loading and caching library for Android focused on smooth scrolling

Glide | View Glide's documentation | 简体中文文档 | Report an issue with Glide Glide is a fast and efficient open source media management and image loading

Bump Technologies 33.2k Jan 7, 2023
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
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
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
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
A circular ImageView for Android

CircleImageView A fast circular ImageView perfect for profile images. This is based on RoundedImageView from Vince Mi which itself is based on techniq

Henning Dodenhof 14.4k Jan 5, 2023
Custom shaped android imageview components

Shape Image View Provides a set of custom shaped android imageview components, and a framework to define more shapes. Implements both shader and bitma

Siyamed SINIR 2.6k Jan 8, 2023
Android ImageView that supports different radii on each corner.

SelectableRoundedImageView Note that this project is no longer maintained. Android ImageView that supports different radii on each corner. It also sup

Joonho Kim 1.1k Nov 25, 2022
:ribbon: The simple way to implement a beautiful ribbon with the shimmering on Android.

AndroidRibbon ?? The simple way to implement a beautiful ribbon with the shimmering on Android. 中文語 Download Gradle Add below codes to your root build

Jaewoong Eum 653 Jan 7, 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