Skip to content

banner:右端缩进、左右露出、返回轮播、循环轮播

License

Notifications You must be signed in to change notification settings

youlookwhat/ByBannerView

Repository files navigation

示例图

重大更新!!

上个版本1.1.7,如果是左右留边的banner样式,首次进去会有黏在一起的情况,但是没有人反馈,所以我认为这个库基本除了我没人使用,哈哈。如果有人使用看这里就好。

  • 1.更改依赖库名:com.github.youlookwhat:ByBannerView:1.4.0
  • 2.xml引入更换:<me.jingbin.banner.ByBannerView/>
  • 3.混淆修正:-keep class me.jingbin.banner.** {*;}
  • 4.如果默认是返回轮播,查看是否添加属性:app:is_back_loop="true"

how to use

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

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

Step 2. Add the dependency

dependencies {
	implementation 'com.github.youlookwhat:ByBannerView:Tag'
}

功能

  • 1.默认滑动到最后一条时,往回轮播
  • 2.可设置右边距的轮播图,也可支持左右都有间距的轮播图
  • 3.支持正常轮播图,并往回轮播或者循环轮播
  • 4.防止重复点击,点击事件实现:OnBannerFilterClickListener

属性解释

属性 类型 默认值 属性说明
delay_time integer 2000ms 延迟多少毫秒开始滚动
scroll_time integer 800ms 滚动一页需要多少毫秒
is_auto_play boolean true 是否自动滚动
is_loop boolean true 是否无限滚动,false则滚动到最后一个时停止滚动
is_back_loop boolean false 滑到到最后一个时,是否返回滑动
indicator_width dimension DisplayWidth / 80 指示器的宽度
indicator_height dimension DisplayWidth / 80 指示器的高度
indicator_margin dimension 10dp 指示器距banner最底部的距离
indicator_padding dimension 5dp 指示器之间的左右边距
indicator_drawable_selected reference gray_radius.xml 选中的指示器样式
indicator_drawable_unselected reference white_radius.xml 未选中的指示器样式
page_left_margin dimension 0 banner距屏幕的左边距
page_right_margin dimension 0 banner距屏幕的右边距

其他方法:

  • setIndicatorGravity(int type): 设置指示器的位置 (BannerConfig.LEFT/CENTER/RIGHT),默认居中CENTER
  • setBannerStyle(int bannerStyle): 设置指示器样式 (默认BannerConfig.CIRCLE_INDICATOR)
    • NOT_INDICATOR: 取消指示器
    • CIRCLE_INDICATOR: 自带的指示器
    • CUSTOM_INDICATOR: 手动设置的指示器,不规定指示器宽高,随指示器自身的宽高

使用示例

<me.jingbin.sbanner.SBannerView
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="330dp"
    app:indicator_height="6dp"
    app:indicator_margin="15dp"
    app:indicator_padding="6dp"
    app:indicator_width="6dp" />
banner.setPageRightMargin(dip2px(this, 59))
        .setBannerAnimation(ScaleRightTransformer.class)
        .setOffscreenPageLimit(list.size())
        .setDelayTime(3000)
        .setPages(list, new HolderCreator<SBannerViewHolder>() {
            @Override
            public SBannerViewHolder createViewHolder() {
                return new CustomViewHolder();
            }
        })
        .start();
banner.setOnBannerClickListener(new OnBannerClickListener() {
    @Override
    public void onBannerClick(int position) {
        
    }
});


class CustomViewHolder implements SBannerViewHolder<BannerItemBean> {

    private TextView mTextView;

    @Override
    public View createView(Context context) {
        View view = LayoutInflater.from(context).inflate(R.layout.banner_item, null);
        mTextView = (TextView) view.findViewById(R.id.text);
        return view;
    }

    @Override
    public void onBind(Context context, int position, BannerItemBean data) {
        
    }
}

混淆

-keep class me.jingbin.banner.** {*;}