Auto Scrolling Image Pager with Pager Indicator and Text

Overview

AutoImageFlipper

Download

API Android Arsenal

Auto Scrolling Image Pager with Pager Indicator and Text

Note: It works only on Apps which are using AndroidX dependencies, if you're not using AndroidX,
you can migrate to AndroidX by selecting Refactor -> Migrate to AndroidX from the
Android Studio top bar.

Gradle

Using jCenter

  • Maven
<dependency>
	<groupId>com.github.technolifestyle</groupId>
	<artifactId>AutoImageFlipper</artifactId>
	<version>1.6.0</version>
	<type>pom</type>
</dependency>
  • Gradle
implementation 'com.github.technolifestyle:AutoImageFlipper:1.6.0'
  • Ivy
<dependency org="com.github.technolifestyle" name="AutoImageFlipper" rev="1.6.0">
	<artifact name="AutoImageFlipper" ext="pom"></artifact>
</dependency>

Using Jitpack

  • Gradle
  1. In your top level build.gradle file, in the repository section add the maven { url 'https://jitpack.io' } as shown below
allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}
  1. Add the AutoImageFlipper dependency in your app level build.gradle file
dependencies {
   implementation 'com.github.therealshabi:AutoImageFlipper:1.6.0'
}
  • Maven
  1. Add the JitPack repository to your build file
<repositories>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>
  1. Add the dependency
<dependency>
    <groupId>com.github.therealshabi</groupId>
    <artifactId>AutoImageFlipper</artifactId>
    <version>1.6.0</version>
</dependency>

Implementation

This is an Automatic scrolling Image Slider Library with the functionality of adding an image with its optional description, it also has a View Pager Indicator and built in listeners and much more.

The library is open for contributions. You can contribute by simply creating a new PR or in case you find any issue/question/any other thing you can report it here.

GIFs

Auto Image Slider

Auto Image Slider Demo Auto Image Slider Demo

Usage

  • In XML layout:
<technolifestyle.com.imageslider.FlipperLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/flipper_layout"
    android:layout_width="match_parent"
    android:layout_height="200dp"/>
  • In Java File: For View Pager with 3 Views
FlipperLayout flipperLayout = (FlipperLayout) findViewById(R.id.flipper_layout);
int num_of_pages = 3;
for (int i = 0; i < num_of_pages; i++) {
  FlipperView view = new FlipperView(getBaseContext());
  view.setImageScaleType(ScaleType.CENTER_CROP) // You can use any ScaleType
      .setDescription("Description") // Add custom description for your image in the flipper view
      .setImage(R.mipmap.ic_launcher, new Function2<ImageView, Object, Unit>() {
          @Override
          public Unit invoke(ImageView imageView, Object image) {
              // As per the user discretion as to how they want to load the URL
              /* E.g since an image of Drawable type is sent as a param in setImage method, The Object
              * image will be of type Drawable
              * imageView.setImageDrawable((Drawable)image);
              */
              return Unit.INSTANCE;
          }
      })
      .setOnFlipperClickListener(new FlipperView.OnFlipperClickListener() {
        @Override
        public void onFlipperClick(FlipperView flipperView) {
            // Handle View Click here
        }
    });
  flipperLayout.setScrollTimeInSec(5); //setting up scroll time, by default it's 3 seconds
  flipperLayout.getScrollTimeInSec(); //returns the scroll time in sec
  flipperLayout.getCurrentPagePosition(); //returns the current position of pager
  flipperLayout.addFlipperView(view);
}
  • FlipperView customization includes:
//Instantiate FlipperView
FlipperView view = new FlipperView(getBaseContext());

Methods to set image resource into the Flipper View

  • Kotlin
//Set Image into the flipperView using url
view.setImageUrl("https://source.unsplash.com/random") { imageView, image ->
    // Load image (url) into the imageview using any image loading library of your choice
    // E.g. Picasso.get().load(image as String).into(imageView);
}

//Set Image using Drawable resource
view.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.placeholder)) { imageView, image ->
  imageView.setImageDrawable(image as Drawable)
}

//Set Image using Bitmap image
view.setImageBitmap(bitmapImage) { imageView, image ->
  imageView.setImageBitmap(image as Bitmap)
}

or you can use a common method to set the image

view.setImage(R.drawable.error) { imageView, image ->
  imageView.setImageDrawable(image as Drawable)
}

There are 4 types of values setImage method can take as the first param, a url of String type, an integer drawable resource Id of @DrawableRes Int type and images of Drawable and Bitmap type. In case any other values are send in this method, the method will throw IllegalArgumentException.

It's worth noting that for each type of image we provide as the first param in the method we need to type cast the image with the same type while setting the image into the image view via the second higher order function, i.e. for instance in method

view.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.placeholder)) { imageView, image ->
  imageView.setImageDrawable(image as Drawable)
}

we sent a Drawable resource file as the first param, so while setting the image in the ImageView in the higher order function, we have type cast it to Drawable type explicitly as we can see in the line imageView.setImageDrawable(image as Drawable), the only exception in this process being the instance when we send a drawable resource, we need to typecast the image to Drawable type, although we send an @DrawableRes Int param.

E.g.

view.setImage(R.drawable.error) { imageView, image ->
  imageView.setImageDrawable(image as Drawable)
}

Besides that setImage method throws 3 kinds of Exception:-

  1. When we send a string URL, which does not actually resolve to an actual URL, a MalformedURLException is thrown.
  2. IllegalArgumentException is thrown when we try to send any Illegal typed first param i.e types in addition to the types a url of String type, an integer drawable resource Id of @DrawableRes Int type and images of Drawable or Bitmap type.
  3. IllegalStateException this exception is thrown when the user tries to set more than one image into a single FlipperView.
  • Java

    For java just replace the 2nd param of above methods with:-

    new Function2<ImageView, Object, Unit>() {
        @Override
        public Unit invoke(ImageView imageView, Object image) {
            // As per the user discretion as to how they want to load the URL
            /* E.g since an image of Drawable type is sent as a param in setImage method, The Object
            * image will be of type Drawable
            * imageView.setImageDrawable((Drawable)image);
            */
            return Unit.INSTANCE;
        }
    }

    For Instance the equivalent of setImageDrawable method in Java would be:-

    view.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.placeholder), new Function2<ImageView, Object, Unit>() {
      @Override
      public Unit invoke(ImageView imageView, Object image) {
        imageView.setImageDrawable((Drawable) IMAGE);
        return Unit.INSTANCE;
      }
    });

    Similarly for all other methods


Other important FlipperView methods

// Set Image Description Text (Optional)
view.setDescription("Great Image");
// Set Description text view background color
view.setDescriptionBackgroundColor(Color.Green);
// Set Description text view background alpha (0 <= alpha <= 1)
view.setDescriptionBackgroundAlpha(0.5f);
// Set Description text view background with color and alpha (0 <= alpha <= 1)
view.setDescriptionBackgroundAlpha(Color.BLUE, 0.5f);

// Set Description text view background with a drawable resource
view.setDescriptionBackgroundDrawable(R.drawable.bg_overlay);
// Reset Description text view background and text color
view.resetDescriptionTextView();
// Set Description Text Text color
view.setDescriptionTextColor(Color.WHITE);
// Set Image scale type (E.g. ScaleType.CENTRE_CROP)
view.setImageScaleType(ScaleType.CENTER_INSIDE);
// Set click listener
view.setOnFlipperClickListener(new FlipperView.OnFlipperClickListener() {
  @Override
  public void onFlipperClick(FlipperView flipperView) {
    Toast.makeText(MainActivity.this, "I was clicked", Toast.LENGTH_SHORT).show();
  }
});
  • FlipperLayout methods includes:-
// Instantiation
FlipperLayout flipperLayout = (FlipperLayout) findViewById(R.id.flipper_layout);
// Set flipper scroll time in seconds (default 3s)
flipperLayout.setScrollTimeInSec(5);
// Method to remove auto image sliding/flipping/cycling
flipperLayout.removeAutoCycle();
// Method to start auto image sliding/flipping/cycling
flipperLayout.startAutoCycle();
flipperLayout.startAutoCycle(5); // will start auto cycling image with a delay of 5 seconds
// Method to remove all existing Flipper Views from the Flipper Layout
flipperLayout.removeAllFlipperViews();
// Set Circle Indicator width (in dp)
flipperLayout.setCircleIndicatorWidth(200);
// Set Circle Indicator height (in dp)
flipperLayout.setCircleIndicatorHeight(20);
// Set Circle Indicator width and height (in dp)
flipperLayout.setCircularIndicatorLayoutParams(200, 20);
// Metod set circular Indicator background
flipperLayout.setIndicatorBackgroundColor(Color.parseColor("#90000000")); // To set background color
flipperLayout.setIndicatorBackground(R.drawable.your_drawable); // To set background drawable using drawable resource id
flipperLayout.setIndicatorBackground(ContextCompat.getDrawable(context, R.drawable.your_drawable)); // To set background drawable using drawable resource
// Remove Circular indicator
flipperLayout.removeCircleIndicator();
// Show Circular Indicator
flipperLayout.showCircleIndicator();
// Method to show inner circle indicator rather than an exterior indicator
flipperLayout.showInnerPagerIndicator();
// Method to customise the flipper layout
flipperLayout.customizeFlipperPager { flipperPager ->
  // Do whatever you like to do with the flipperPager
};
// Method to customise flipper layout's default circular indicator
flipperLayout.customizeCircularIndicator { circularIndicator ->
  // Do whatever you like to do with the circular indicator
};
// Returns the currently displayed
flipperLayout.getCurrentPagePosition();
// Add flipperView into the flipperLayout
flipperLayout.addFlipperView(flipperView);
// Add list of flipperViews into the flipperLayout at once
ArrayList<FlipperView> flipperViewList = new ArrayList()
flipperViewList.add(new FlipperView(context));
flipperViewList.add(new FlipperView(context)
        .setDescription("test flipper view"));
...
flipperLayout.addFlipperViewList(flipperViewList);
// Add different PageTransformer animation similar to ViewPager
flipperLayout.addPageTransformer(false, new ZoomOutPageTransformer());

A couple of pre-defined PageTransformer is included in the library namely, ZoomOutPageTransformer and DepthPageTransformer, you can add your custom PageTransformer logic as well.

flipperLayout.addPageTransformer(false, new ViewPager.PageTransformer() {
  @Override
  public void transformPage(@NonNull View page, float position) {
    //Write your animation logic here
  }
});

Usage with the RecyclerView

To use FlipperLayout in the RecyclerView, before binding the layout remove all the existing flipper views from the FlipperLayout by calling flipperLayout.removeAllFlipperViews() and post that populate new flipper views in the flipperLayout. A sample code is present in the HomeRecyclerAdapter class.

License

Copyright 2021 Shahbaz Hussain

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
  • ViewPager scrolls back immediately to the first item when there are only two items

    ViewPager scrolls back immediately to the first item when there are only two items

    When the user scrolls to the second item, if the layout has only two FlipperViews, the ViewPager scrolls back immediately to the first item. The ViewPager should remain at that position (or switch after a certain amount of time if auto cycle is enabled).

    Here is an example: ezgif-6-444070d61c5f

    This problem doesn't occur when there are more than two FlipperViews. ezgif-6-153ac05e0290

    Version of the library used: 1.6.0

    is:bug 
    opened by Sonphil 37
  • Cant Update to v1.4.3

    Cant Update to v1.4.3

    I get an error: Caused by: android.view.InflateException: Binary XML file line #21: Error inflating class technolifestyle.com.imageslider.FlipperLayout when i use v1.4.3 or 1.4.2 but if i use implementation 'com.github.therealshabi:AutoImageFlipper:v1.4.1' it work but flipper.setScrollTimeInSec(5); doesnt.

    Any idea how i can update to 1.4.3? Sorry for bothering but ur proyect is vital in my first app (http://bit.ly/domiyiacacias) MANY THANKS FOR IT

    next my app graddle file: app gradle.txt

    opened by Jejid 10
  • How to remove bottom shadow in the layout?

    How to remove bottom shadow in the layout?

    Hi, many thanks for thisone. Im new as developer and new here (github) too. I just want to know how to remover that bottom shadow in the layout maked for text visibilty. Thanks again

    is:enhancement 
    opened by Jejid 8
  • app:checkDebugDuplicateClasses Duplicate Picasso

    app:checkDebugDuplicateClasses Duplicate Picasso

    Query I used Picasso Library before use this AutoImageFlipper. After compile my App, I got error Duplicate Picasso Class. Can you help me, how to fix this issue?

    Version of the library used I used AutoImageFlipper version com.github.technolifestyle:imageslider:1.5.6 which conflict with Picasso-2.5.2.

    is:question 
    opened by zebhi 6
  • Method ScaleType from url download, failure

    Method ScaleType from url download, failure

    Hi Sir, me again. Thanks for support with your library

    Scaling image in the flipper is failing CENTER_INSIDE and FIT_CENTER, it doesnt work correectly when you download a image from a url, flipper dont center images. With drawable works fine

    view.setImageScaleType(ScaleType.CENTER_INSIDE);
    view.setImageScaleType(ScaleType.FIT_CENTER);
    

    see Screenshots of organization inside fliper. Flipper just move up the images

    ss2 ss1

    Version of the library used 'com.github.therealshabi:AutoImageFlipper:1.5.6'

    Thanks for attention

    is:bug 
    opened by Jejid 4
  • Issue with Kotlin

    Issue with Kotlin

    Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath: class technolifestyle.com.imageslider.CircularFlipperHandler, unresolved supertypes: androidx.viewpager.widget.ViewPager.OnPageChangeListener

    kotlin

    opened by djsreeraj 4
  • Flipper doesn't clear previous views when used inside a recyclerView

    Flipper doesn't clear previous views when used inside a recyclerView

    I've implemented FlipperLayout in part of a layout of items presented in a recyclerView. My problem is that the flipper shows images of other items. I've tried using removeAllViewsInLayout() when binding, and before adding the new views, but now the flipper just remains empty. I've also tried to use clearDisappearingChildren() which didnt help either. Any tips on how to use inside a recyclerview?

    is:bug 
    opened by Tsabary 3
  • Error inflating class technolifestyle.com.imageslider.FlipperLayout

    Error inflating class technolifestyle.com.imageslider.FlipperLayout

    what is this error and how to solve it?

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) Caused by: android.view.InflateException: Binary XML file line #30: Binary XML file line #47: Error inflating class technolifestyle.com.imageslider.FlipperLayout at android.view.LayoutInflater.inflate(LayoutInflater.java:539) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)

    opened by Midhilaj 3
  •  Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull

    Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull

    Getting this issue when i have used in Fragment - java

    java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter context at technolifestyle.com.imageslider.FlipperView.(Unknown Source:2)

    opened by ramya2344 2
  • Example

    Example

    Query Hey, would you Like to write me an example about how to use this autoimageslider? Im new to Java and dont understand Unit class , i used viewflipper Ver. 1.4.1 and it lags to much in scroll , wanna Try ver1.6.0. please

    Version of the library used Add the library version which is causing the bug

    is:question 
    opened by Blado 2
  • setScrollTimeInSec not works

    setScrollTimeInSec not works

    Hi, I read the documentation for change the delay between images, but not works.

    Im using, for delay 1 minute: flipper.setScrollTimeInSec(60)

    But only delays 3 seconds, you know if im doing bad the things?

    is:bug 
    opened by omar201816 2
  • Unit keyword is not working please solve this problem

    Unit keyword is not working please solve this problem

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    Version of the library used Add the library version which is causing the bug

    is:bug 
    opened by Asdeveloperss 2
  • removeAllFlipperViews() doesn't delete image ?

    removeAllFlipperViews() doesn't delete image ?

    Im trying to delete all the views and add new views in to the flipperlayout.

    When i use removeAllFlipperViews() it deletes all items in flipperview array but on the screen it still show an image.

    When i add new views the first item is still the old image. But when im at the last view and scroll right. It updates the first image too the right image.

    And when i only have 2 image views it crashes the app when i swipe to left ? and if i swipe to second view it jumps back to first view ?

    is:bug 
    opened by muhammed38 1
  • setRoundedCorners

    setRoundedCorners

    ¿Can we set rounded corners to images shown in Flipper?

    like Glide: .apply(new RequestOptions().bitmapTransform(new RoundedCorners(18)))

    or something like .setRoundedCorners(roundingRadius:18)

    is:question 
    opened by Jejid 3
  • StackOverflow error when used inside recyclerview

    StackOverflow error when used inside recyclerview

    java.lang.StackOverflowError: stack size 8MB at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1098) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:669) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612) at technolifestyle.com.imageslider.CircularFlipperHandler.onPageScrollStateChanged(CircularFlipperHandler.kt:25) at androidx.viewpager.widget.ViewPager.dispatchOnScrollStateChanged(ViewPager.java:1964) at androidx.viewpager.widget.ViewPager.setScrollState(ViewPager.java:497) at androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:272) at androidx.viewpager.widget.ViewPager.completeScroll(ViewPager.java:2005) at androidx.viewpager.widget.ViewPager.smoothScrollTo(ViewPager.java:974) at androidx.viewpager.widget.ViewPager.scrollToItem(ViewPager.java:684) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:670) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612) at technolifestyle.com.imageslider.CircularFlipperHandler.onPageScrollStateChanged(CircularFlipperHandler.kt:25) at androidx.viewpager.widget.ViewPager.dispatchOnScrollStateChanged(ViewPager.java:1964) at androidx.viewpager.widget.ViewPager.setScrollState(ViewPager.java:497) at androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:272) at androidx.viewpager.widget.ViewPager.completeScroll(ViewPager.java:2005) at androidx.viewpager.widget.ViewPager.smoothScrollTo(ViewPager.java:974) at androidx.viewpager.widget.ViewPager.scrollToItem(ViewPager.java:684) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:670) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612) at technolifestyle.com.imageslider.CircularFlipperHandler.onPageScrollStateChanged(CircularFlipperHandler.kt:25) at androidx.viewpager.widget.ViewPager.dispatchOnScrollStateChanged(ViewPager.java:1964) at androidx.viewpager.widget.ViewPager.setScrollState(ViewPager.java:497) at androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:272) at androidx.viewpager.widget.ViewPager.completeScroll(ViewPager.java:2005) at androidx.viewpager.widget.ViewPager.smoothScrollTo(ViewPager.java:974) at androidx.viewpager.widget.ViewPager.scrollToItem(ViewPager.java:684) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:670) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612) at technolifestyle.com.imageslider.CircularFlipperHandler.onPageScrollStateChanged(CircularFlipperHandler.kt:25) at androidx.viewpager.widget.ViewPager.dispatchOnScrollStateChanged(ViewPager.java:1964) at androidx.viewpager.widget.ViewPager.setScrollState(ViewPager.java:497) at androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:272) at androidx.viewpager.widget.ViewPager.completeScroll(ViewPager.java:2005) at androidx.viewpager.widget.ViewPager.smoothScrollTo(ViewPager.java:974) at androidx.viewpager.widget.ViewPager.scrollToItem(ViewPager.java:684) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:670) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612) at technolifestyle.com.imageslider.CircularFlipperHandler.onPageScrollStateChanged(CircularFlipperHandler.kt:25) at androidx.viewpager.widget.ViewPager.dispatchOnScrollStateChanged(ViewPager.java:1964) at androidx.viewpager.widget.ViewPager.setScrollState(ViewPager.java:497) at androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:272)

    is:bug 
    opened by hgayan7 0
Releases(v1.6.0)
Owner
Shahbaz Hussain
Currently working as a Software Engineer at magicpin. Former Software Developer at Smartprix. Android Lover and Developer Android Enthusiast
Shahbaz Hussain
This is an Image slider with swipes, Here we used Volley to Image load URL's from JSON! Here we make it very easy way to load images from Internet and We customized the description font style(OpenSans).

ImageSliderWithSwipes This is an Image slider with swipes, Here we used Volley to load URL's from JSON! Here we make it very easy way to load images f

Prabhakar Thota 44 May 31, 2021
A library for auto removing background from your photos.

This is an android library for removing background from the image. You have to give the bitmap of the image to this library and the library will retur

Ghayas Ahmad 47 Jan 5, 2023
Library to save image locally and shows options to open and share !

Image Save and Share Library to save image locally and shows options to open and share ! Download Demo APK from HERE Kindly use the following links to

Prabhakar Thota 27 Apr 18, 2022
Add curve at bottom of image views and relative layouts.

Crescento Android library that adds a curve at the below of image views and relative layouts. CrescentoImageView and CrescentoContainer are the image

Shivam Satija 1.3k Nov 18, 2022
Android widget for cropping and rotating an image.

Cropper The Cropper is an image cropping tool. It provides a way to set an image in XML and programmatically, and displays a resizable crop window on

Edmodo 2.9k Nov 14, 2022
Customizable Android full screen image viewer for Fresco library supporting "pinch to zoom" and "swipe to dismiss" gestures. Made by Stfalcon

This project is no longer supported. If you're able to switch from Fresco to any other library that works with the Android's ImageView, please migrate

Stfalcon LLC 1.8k Dec 19, 2022
Add curve at bottom of image views and relative layouts.

Crescento Android library that adds a curve at the below of image views and relative layouts. CrescentoImageView and CrescentoContainer are the image

Shivam Satija 1.3k Mar 24, 2021
Dali is an image blur library for Android. It contains several modules for static blurring, live blurring and animations.

Dali Dali is an image blur library for Android. It is easy to use, fast and extensible. Dali contains several modules for either static blurring, live

Patrick Favre-Bulle 1k Dec 1, 2022
An Android project containing image recognition and object detection models.

An Android project containing image recognition and object detection models. Users can input images into the deep learning model by taking photos, opening photo albums, and real-time previews on the Android side. After the calculation on the Android side is completed, the model will output the prediction result and show it to the user.

null 7 Nov 27, 2022
An Android transformation library providing a variety of image transformations for Coil, Glide, Picasso, and Fresco.

An Android transformation library providing a variety of image transformations for Coil, Glide, Picasso, and Fresco.

Daichi Furiya 257 Jan 2, 2023
Pixel Boom is a Java-based Android software, featuring image super-resolution and colorization

Pixel Boom is a Java-based Android software, featuring image super-resolution and colorization.

Zaitian 1 Jul 3, 2022
some android image filters

android-image-filter some android image filters in some filter, I use NDK to implement to make it more efficient Setup Install Android NDK and properl

RagnarokStack 643 Dec 27, 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 Dec 31, 2022
A simple image cropping library for Android.

SimpleCropView The SimpleCropView is an image cropping library for Android. It simplifies your code for cropping image and provides an easily customiz

Issei Aoki 2.5k Dec 28, 2022
A small customizable library useful to handle an gallery image pick action built-in your app. :sunrise_over_mountains::stars:

Louvre A small customizable image picker. Useful to handle an gallery image pick action built-in your app. *Images from Google Image Search Installati

André Mion 640 Nov 19, 2022
An image resizing library for Android

Resizer Inspired by zetbaitsu's Compressor, Resizer is a lightweight and easy-to-use Android library for image scaling. It allows you to resize an ima

Kakit Ho 426 Dec 22, 2022
✔️ Hide a secret message in an image

Image Steganography Steganography is the process of hiding a secret message within a larger one in such a way that someone cannot know the presence or

Ayush Agarwal 120 Dec 18, 2022
Simple android image popup Library

Android Image Popup Show image as a popup on a click event or any event. Simply set the image as drawable and thats it!!!. And also you can set width,

Chathura Lakmal 64 Nov 15, 2022
Image loading library for Android

Image Loader Image loader library for Android. Deprecated. See Glide. Features Image transformations Automatic memory and storage caching Ability to l

Yuriy Budiyev 19 May 28, 2022