Banner-Slider

Banner slider is an easy to use library for making beautiful sliders in your android app.

Banner-Slider

How to download

Gradle

add this line to your module build.gradle dependecies block:

compile 'com.ss.bannerslider:bannerslider:2.0.0'

Maven

<dependency>
  <groupId>com.ss.bannerslider</groupId>
  <artifactId>bannerslider</artifactId>
  <version>2.0.0</version>
  <type>pom</type>
</dependency>

How use this library

XML

<ss.com.bannerslider.Slider
   android:id="@+id/banner_slider1"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   />
XML

Java

Step 1: extend SliderAdapter

in first step you must create an adapter to adapt your data model with slides. example implemented adapter with 3 slides:

public class MainSliderAdapter extends SliderAdapter {

    @Override
    public int getItemCount() {
        return 3;
    }

    @Override
    public void onBindImageSlide(int position, ImageSlideViewHolder viewHolder) {
        switch (position) {
            case 0:
                viewHolder.bindImageSlide("https://assets.materialup.com/uploads/dcc07ea4-845a-463b-b5f0-4696574da5ed/preview.jpg");
                break;
            case 1:
                viewHolder.bindImageSlide("https://assets.materialup.com/uploads/20ded50d-cc85-4e72-9ce3-452671cf7a6d/preview.jpg");
                break;
            case 2:
                viewHolder.bindImageSlide("https://assets.materialup.com/uploads/76d63bbc-54a1-450a-a462-d90056be881b/preview.png");
                break;
        }
    }
}
Java

Step 2: specify your image loading service

you must specify image loading service for loading images(for better flexibility and prevent adding unnecessary libraries).
for example if you work with picasso for loading images in your project, you must implement ImageLoadingService interface like below:

public class PicassoImageLoadingService implements ImageLoadingService {
    public Context context;

    public PicassoImageLoadingService(Context context) {
        this.context = context;
    }

    @Override
    public void loadImage(String url, ImageView imageView) {
        Picasso.with(context).load(url).into(imageView);
    }

    @Override
    public void loadImage(int resource, ImageView imageView) {
        Picasso.with(context).load(resource).into(imageView);
    }

    @Override
    public void loadImage(String url, int placeHolder, int errorDrawable, ImageView imageView) {
        Picasso.with(context).load(url).placeholder(placeHolder).error(errorDrawable).into(imageView);
    }
}
Java

Step 3: initialize slider in your Application class

Slider.init(YOUR IMAGE LOADING SERVICE);
Java

Step 4: set your adapter on slider

slider = findViewById(R.id.banner_slider1);
        slider.setAdapter(new MainSliderAdapter());
Java

You want more customization?

Changing slides automatically in specifed periods

interval attribute get miliseconds.

  app:slider_interval="5000"
XML

Loop slides

  app:slider_loopSlides="true"
XML

Choose default banner to show up first

slider.setSelectedSlide(2);
Java

you must pass banner position to it:

  app:slider_defaultBanner="1"
XML

Enable/disable indicators animations

in default, animations are enabled

  app:slider_animateIndicators="true"
XML

Use custom Indicators

if you also set default indicators, then this attributes will ignored

  app:slider_selectedSlideIndicator="@drawable/selected_slide_indicator"
  app:slider_unselectedSlideIndicator="@drawable/unselected_slide_indicator"
XML

How set empty view, when banners not received from server yet?

  app:slider_emptyView="@layout/layout_empty_view"
XML

Change indicator sizes

  app:slider_indicatorSize="12dp"
XML

Set OnBannerClickListener

slider.setOnSlideClickListener(new OnSlideClickListener() {
            @Override
            public void onSlideClick(int position) {
                //Do what you want
            }
        });
  });
Java

GitHub