banner库的简单使用

2025-12-20 07:46:56 / 攻略指南

banner

现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能。因为ViewPager并不支持循环翻页, 很多时候都需要自己去写。这个banner库目前框架可以进行不同样式、不同动画设置, 以及完善的api方法能满足大部分的需求。

效果图:

实现步骤:

1.依赖banner

Gradle

dependencies{

compile 'com.youth.banner:banner:1.4.9' //最新版本

}

或者引用本地lib

compile project(‘:banner’)

2.添加权限到你的 AndroidManifest.xml

3.在布局文件中添加Banner,可以设置自定义属性

!!!此步骤可以省略,直接在Activity或者Fragment中new Banner();

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/banner"

android:layout_width="match_parent"

android:layout_height="高度自己设置" />

4.重写图片加载器

public class GlideImageLoader extends ImageLoader {

@Override

public void displayImage(Context context, Object path, ImageView imageView) {

/**

注意:

1.图片加载器由自己选择,这里不限制,只是提供几种使用方法

2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器,

传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行,

切记不要胡乱强转!

*/

eg:

//Glide 加载图片简单用法

Glide.with(context).load(path).into(imageView);

//Picasso 加载图片简单用法

Picasso.with(context).load(path).into(imageView);

//用fresco加载图片简单用法,记得要写下面的createImageView方法

Uri uri = Uri.parse((String) path);

imageView.setImageURI(uri);

}

//提供createImageView 方法,如果不用可以不重写这个方法,主要是方便自定义ImageView的创建

@Override

public ImageView createImageView(Context context) {

//使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView

SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context);

return simpleDraweeView;

}

}

5.在Activity或者Fragment中配置Banner

————————–简单使用——————————-

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Banner banner = (Banner) findViewById(R.id.banner);

//设置图片加载器

banner.setImageLoader(new GlideImageLoader());

//设置图片集合

banner.setImages(images);

//banner设置方法全部调用完毕时最后调用

banner.start();

}

————————–详细使用——————————-

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Banner banner = (Banner) findViewById(R.id.banner);

//设置banner样式

banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);

//设置图片加载器

banner.setImageLoader(new GlideImageLoader());

//设置图片集合

banner.setImages(images);

//设置banner动画效果

banner.setBannerAnimation(Transformer.DepthPage);

//设置标题集合(当banner样式有显示title时)

banner.setBannerTitles(titles);

//设置自动轮播,默认为true

banner.isAutoPlay(true);

//设置轮播时间

banner.setDelayTime(1500);

//设置指示器位置(当banner模式中有指示器时)

banner.setIndicatorGravity(BannerConfig.CENTER);

//banner设置方法全部调用完毕时最后调用

banner.start();

}

-----------------当然如果你想偷下懒也可以这么用--------------------

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Banner banner = (Banner) findViewById(R.id.banner);

banner.setImages(images).setImageLoader(new GlideImageLoader()).start();

}

6.(可选)增加体验

//如果你需要考虑更好的体验,可以这么操作

@Override

protected void onStart() {

super.onStart();

//开始轮播

banner.startAutoPlay();

}

@Override

protected void onStop() {

super.onStop();

//结束轮播

banner.stopAutoPlay();

}

常用设置

banner.setBannerStyle()

//设置banner样式

banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);

banner.setBannerAnimation(Transformer.CubeOut);

BannerConfig.CIRCLE_INDICATOR_TITLE 这个属性,如果直接使用会报错的,

java.lang.RuntimeException: [Banner] –> The number of titles and images is different

所以一定要加上下面这个方法:

//设置banner样式

banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);

banner.setBannerAnimation(Transformer.CubeOut);

//设置标题集合(当banner样式有显示title时)

banner.setBannerTitles(titles);

这个设置也常常用:

//设置指示器位置(当banner模式中有指示器时)

banner.setIndicatorGravity(BannerConfig.LEFT);

下面是style可以设置的表:

在xml里用到的属性: