Skip to content

A powerful android view looper library animing to simplify this high frequency function in daily development. Support for Android 2.2 and up.

License

Notifications You must be signed in to change notification settings

wlmxj/FlycoBanner_Master

 
 

Repository files navigation

#FlycoBanner-Master

A powerful android view looper library animing to simplify this high frequency function in daily development. Support for Android 2.2 and up.

#Background

Image loop banner is high frequency used in most apps. So is the app of the company I work for. At first, this is only used in home page. Later with the app update, there are some simliar functions needed in other pages both image and text. I copy the same code here and there, finally I can not standing copying anymore. I explore on the github to find libs that meet my needs. Though I find some poewful libs, but the lib what I want should support view looping not only ImageView. And I do not want a lib having a ImageLoad Framework inside. So I decide to code a libray with features below:

  • Use Executors instead of Task
  • Supports both normal banner and endless auto loop banner
  • Supports inflate item view and logic operation such as loading image outside.
  • Supports set source using data list with different entity
  • Supports smartly pause scroll and continue scroll.
    • Touch down pause. Touch up continue.
    • Window of activty off pause.Window of activty on continue.
  • Supports inner indictaors
  • Supports page transformer (not often used in my daily work, just support this feature for others if needed)

##Demo

####Here is a DemoApk download

##Gradle

dependencies{
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.flyco.banner:FlycoBanner_Lib:1.2.0@aar'
}

##Usage

###Extends BaseIndicaorBanner and Set Data Type

public class SimpleImageBanner extends BaseIndicaorBanner<BannerItem, SimpleImageBanner> {
    private ColorDrawable colorDrawable;

    public SimpleImageBanner(Context context) {
        this(context, null, 0);
    }

    public SimpleImageBanner(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public SimpleImageBanner(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        colorDrawable = new ColorDrawable(Color.parseColor("#555555"));
    }

    @Override
    public void onTitleSlect(TextView tv, int position) {
        final BannerItem item = list.get(position);
        tv.setText(item.title);
    }

    @Override
    public View onCreateItemView(int position) {
        View inflate = View.inflate(context, R.layout.adapter_simple_image, null);
        ImageView iv = ViewFindUtils.find(inflate, R.id.iv);

        final BannerItem item = list.get(position);
        int itemWidth = dm.widthPixels;
        int itemHeight = (int) (itemWidth * 360 * 1.0f / 640);
        iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
        iv.setLayoutParams(new LinearLayout.LayoutParams(itemWidth, itemHeight));

        String imgUrl = item.imgUrl;

        if (!TextUtils.isEmpty(imgUrl)) {
            Glide.with(context)
                    .load(imgUrl)
                    .override(itemWidth, itemHeight)
                    .centerCrop()
                    .placeholder(colorDrawable)
                    .into(iv);
        } else {
            iv.setImageDrawable(colorDrawable);
        }

        return inflate;
    }
}

###The Most Complex in layout xml

<com.flyco.bannersamples.banner.SimpleImageBanner
        android:id="@+id/sib_the_most_comlex_usage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        banner:bb_barColor="#88000000"
        banner:bb_barPaddingBottom="5dp"
        banner:bb_barPaddingLeft="10dp"
        banner:bb_barPaddingRight="10dp"
        banner:bb_barPaddingTop="5dp"
        banner:bb_delay="2"
        banner:bb_indicatorGravity="RIGHT"
        banner:bb_isAutoScrollEnable="true"
        banner:bb_isBarShowWhenLast="true"
        banner:bb_isIndicatorShow="true"
        banner:bb_isLoopEnable="true"
        banner:bb_isTitleShow="true"
        banner:bb_period="10"
        banner:bb_scale="0.5625"
        banner:bb_textColor="#ffffff"
        banner:bb_textSize="13.5sp"
        banner:bib_indicatorCornerRadius="3dp"
        banner:bib_indicatorGap="8dp"
        banner:bib_indicatorHeight="6dp"
        banner:bib_indicatorSelectColor="#ffffff"
        banner:bib_indicatorStyle="CORNER_RECTANGLE"
        banner:bib_indicatorUnselectColor="#88ffffff"
        banner:bib_indicatorWidth="6dp"/>

int Java Code

sib
    .setSelectAnimClass(ZoomInEnter.class)              //set indicator select anim
    .setSource(DataProvider.getList())                  //data source list
    .setTransformerClass(ZoomOutSlideTransformer.class) //set page transformer
    .startScroll();

###The Simplest in layout xml

<com.flyco.bannersamples.banner.SimpleImageBanner
       android:id="@+id/sib_simple_usage"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       banner:bb_scale="0.5625"/>

int Java Code

sib
   .setSource(DataProvider.getList())
   .startScroll();

###Attributes

####BaseBanner

name format description
bb_scale float scale of Banner height and width,height/screenWidth
bb_isLoopEnable boolean is LoopViewPager or not,default true
bb_delay integer delay before start scroll,unit second,default 5 seconds
bb_period integer scroll period,unit second,default 5 seconds
bb_isAutoScrollEnable boolean is auto scroll enable,default true
bb_barColor color set bootom bar color,default transparent
bb_isBarShowWhenLast boolean set bottom bar show or not when the position is the last
bb_barPaddingLeft dimension set bottom bar padding,unit dp
bb_barPaddingTop dimension set bottom bar padding,unit dp
bb_barPaddingRight dimension set bottom bar padding,unit dp
bb_barPaddingBottom dimension set bottom bar padding,unit dp
bb_textColor color set title text color,default "#ffffff"
bb_textSize dimension set title text size,unit sp,default 14sp
bb_isTitleShow boolean set title show or not,default true
bb_isIndicatorShow boolean set indicator show or not,default true
bb_indicatorGravity enum Gravity.CENTER or RIGHT or LEFT.if gravity equals CENTER,title will not be supported,default CENTER

####BaseIndicaorBanner

name format description
bib_indicatorStyle enum indicator style, STYLE_DRAWABLE_RESOURCE or STYLE_CORNER_RECTANGLE
bib_indicatorWidth dimension indicator width, unit dp, default 6dp
bib_indicatorHeight dimension indicator height,unit dp,default 6dp
bib_indicatorGap dimension gap between two indicators,unit dp,default 6dp
bib_indicatorSelectColor color indicator select color for STYLE_CORNER_RECTANGLE, default "#ffffff"
bib_indicatorUnselectColor color indicator unselect color for STYLE_CORNER_RECTANGLE, default "#88ffffff"
bib_indicatorCornerRadius dimension indicator corner raduis for STYLE_CORNER_RECTANGLE,unit dp, default 3dp
bib_indicatorSelectRes reference indicator select drawable resource for STYLE_DRAWABLE_RESOURCE
bib_indicatorUnselectRes reference indicator unselect drawable resource for STYLE_DRAWABLE_RESOURCE

##Thanks

About

A powerful android view looper library animing to simplify this high frequency function in daily development. Support for Android 2.2 and up.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%