rtugeek / MaterialBanner

MaterialBanner
https://github.com/rtugeek/MaterialBanner
81 stars 19 forks source link

MaterialBanner

ScreenShot:

Idea from Google Trips:

Demo APK

Attrs

attr format default
indicatorMargin dimension 10dp
indicatorInside boolean true
indicatorGravity flag:left,center,right left
match boolean false

Gradle:

API Android Arsenal

Step 1. Add the JitPack repository in your root build.gradle at the end of repositories:

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

Step 2. Add the dependency

  compile 'com.github.rtugeek:materialbanner:1.0.2'

XML

  <com.freegeek.android.materialbanner.MaterialBanner
      android:id="@+id/material_banner"
      android:layout_width="match_parent"
      app:match="true"
      android:layout_height="200dp"/>
  MaterialBanner materialBanner = (MaterialBanner) findViewById(R.id.material_banner);
  materialBanner.setPages(new SimpleViewHolderCreator(), data)
            .setIndicator(circlePageIndicator);
  //set circle indicator
  materialBanner.setIndicator(new CirclePageIndicator(this));
  //indicators:
  //CirclePageIndicator,IconPageIndicator,LinePageIndicator
  //Custom indicator view needs to implement com.freegeek.android.materialbanner.view.indicator.PageIndicator

More usage

Listener


  materialBanner.setOnItemClickListener(new MaterialBanner.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {

            }
        });

  materialBanner.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                textView.setText("My hometown: page " + ++position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

Customize

1.Create Holder,See also SimpleHolderSimpleBannerData

public class YourHolder implements Holder<YourData> {

    @Override
    public View createView(Context context) {
        View view = LayoutInflater.from(context).inflate(R.layout.simple_banner_item,null);
        //init your view here
        return view;
    }

    @Override
    public void updateUI(Context context, int position, YourData data) {
        //update your view here
    }

}

2.Create HolderCreator

public class YourHolderCreator implements ViewHolderCreator{

    @Override
    public YourHolder createHolder() {
        return new YourHolder();
    }

}

3.Set your creator

materialBanner.setPages(new YourHolderCreator(), list);

Spread the word

Thanks to:

Android-ConvenientBanner
ViewPagerIndicator

License

        DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                Version 2, December 2004

Copyright (C) 2004 Jack Fu <rtugeek@gmail.com>

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

        DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 0. You just DO WHAT THE FUCK YOU WANT TO.