Giter VIP home page Giter VIP logo

mediasliderview's Introduction

Android Arsenal Build status Maintainability License GitHub top language GitHub code size in bytes

Repository Logo

MediaSliderView

Sliding Gallery View supporting both images and videos, for android applications.(Androidx support enabled).

Capabilities and Functionalities

MediaSliderView is a compact library for having a slideable/swipeable gallery view inside your android application, which supports both images and videos. MediaSliderView uses Glide (https://github.com/bumptech/glide) for images and exoplayer (https://github.com/google/ExoPlayer) for videos, under the hood, to render images and videos inside custom views which are handled by a viewpager to render a swipeable gallery with on demand view creation, updation and destruction. The library itself is highly customizable and the images in the gallery support pinch, zoom and panning capabilities and play/pause/restart support for videos.

What's Included ?

  • Swipe left and right to navigate the gallery.
  • Fast and efficient image loading with Glide.
  • Exoplyer support for playing videos inside the gallery.
  • Supports Url's as well as local file paths.
    (Note: android uri's are not supported, only absolute file paths can be used).
  • Progress indicators for resource load progress.
  • Launch your gallery from a particular position.
  • Title for gallery view.
  • Navigation buttons on either sides to navigate through the gallery smoothly.
  • Item count view(current/total).

Supported MediaTypes

The gallery, at a given instance of time can host only one type of media content, either images or videos.

As of now, for videos only .mp4 file format is supported and for images .jpeg and .png file formats are supported.

Demo and Samples

Image and Video Galleries -

image_gif video_gif

Gallery Items -

img_ss vid_ss
img_2 img_3

Download & Setup

Repository available on https://jitpack.io.

1). Add the jitpack support to your project-level gradle file.

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

2). Add the gradle dependency in the build.gradle file.

Note: Replace Tag with the current version.

dependencies {
   implementation 'com.github.Zeuskartik:MediaSliderView:Tag' //eg.- implementation 'com.github.Zeuskartik:MediaSliderView:1.1'
}

3). Add the necessary permissions (as per your use case), in your manifest.xml as follows -

i. Internet (when using Url's)

<uses-permission android:name="android.permission.INTERNET" />   

ii. Read External Storage (when using local filepaths)

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Note: When using local filepaths, make sure to check permission at runtime to read external storage. Also, Uri's are not supported yet, the user needs to provide absolute file path to the resource to be loaded.

4). Create a new java class in your app/src/main/java/<com.yourpackagename> folder and extend 'MediaSliderActivity'.

public class SliderDemo extends MediaSliderActivity {


}

5). Register this new class in your manifest.xml file (since this class extends an activity now).

6). Override the 'onCreate' method inside this java class.

public class SliderDemo extends MediaSliderActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
    }
}

7). Inside 'onCreate' call loadMediaSliderView() method of the 'MediaSliderActivity'

The loadMediaSliderView() method takes the following arguemnts-

Parameter Type Value Inference
mediaUrlList ArrayList An Arraylist of String type containing either URL's or local filepaths or a combination of both for a given media type(i.e. image or video) in string format.
mediaType String "image"/"video" Type of media the gallery will host, either images or videos.
isTitleVisible boolean true/false Specifies whether the title of the gallery will be visible or not.
isMediaCountVisible boolean true/false Specifies whether the item count of the gallery will be visible or not.
isNavigationVisible boolean true/false Specifies whether the left and right navigation buttons will be visible or not.
title String Title of the slider gallery view.
titleBackgroundColor String Eg.-"#ffffff" Backgroundcolor of the title bar for the gallery. It only accepts hexadecimal color strings.
titleTextColor String Eg.-"#000000" Text color of the gallery title. It only accepts hexadecimal color strings.
startPosition int Eg.- 0 Starting index for your gallery. If you want to launch gallery from starting, pass 0 in the method.

Usage-

public class SliderDemo extends MediaSliderActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        loadMediaSliderView(list,"image",true,true,false,"Image-Slider","#000000",null,0); 
    }
}

And it's done.
Fire an intent from some other activity onto this class and your gallery shall load the resources you provided.

Contributions and Support

Contributions are welcome. Create a new pull request in order to submit your fixes and they shall be merged after moderation. In case of any issues, bugs or any suggestions, either create a new issue or post comments in already active relevant issues. Please refer to our Code of Conduct for more information.

License

MediaSliderView is available under the Apache 2.0 License. See the LICENSE file for more info.

mediasliderview's People

Contributors

zeuskartik avatar giejay avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.