常量
| 常量名称 | 描述 | 所属方法 |
|---|---|---|
| BannerConfig.NOT_INDICATOR | 不显示指示器和标题 | setBannerStyle |
| BannerConfig.CIRCLE_INDICATOR | 显示圆形指示器 | setBannerStyle |
| BannerConfig.NUM_INDICATOR | 显示数字指示器 | setBannerStyle |
| BannerConfig.NUM_INDICATOR_TITLE | 显示数字指示器和标题 | setBannerStyle |
| BannerConfig.CIRCLE_INDICATOR_TITLE | 显示圆形指示器和标题(垂直显示) | setBannerStyle |
| BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE | 显示圆形指示器和标题(水平显示) | setBannerStyle |
| BannerConfig.LEFT | 指示器居左 | setIndicatorGravity |
| BannerConfig.CENTER | 指示器居中 | setIndicatorGravity |
| BannerConfig.RIGHT | 指示器居右 | setIndicatorGravity |
动画常量类(setBannerAnimation方法调用)
| 常量类名 |
|---|
| Transformer.Default |
| Transformer.Accordion |
| Transformer.BackgroundToForeground |
| Transformer.ForegroundToBackground |
| Transformer.CubeIn |
| Transformer.CubeOut |
| Transformer.DepthPage |
| Transformer.FlipHorizontal |
| Transformer.FlipVertical |
| Transformer.RotateDown |
| Transformer.RotateUp |
| Transformer.ScaleInOut |
| Transformer.Stack |
| Transformer.Tablet |
| Transformer.ZoomIn |
| Transformer.ZoomOut |
| Transformer.ZoomOutSlide |
方法
| 方法名 | 描述 | 版本限制 |
|---|---|---|
| setBannerStyle(int bannerStyle) | 设置轮播样式(默认为CIRCLE_INDICATOR) | 无 |
| setIndicatorGravity(int type) | 设置指示器位置(没有标题默认为右边,有标题时默认左边) | 无 |
| isAutoPlay(boolean isAutoPlay) | 设置是否自动轮播(默认自动) | 无 |
| setViewPagerIsScroll(boolean isScroll) | 设置是否允许手动滑动轮播图(默认true) | 1.4.5开始 |
| update(List<?> imageUrls,List titles) | 更新图片和标题 | 1.4.5开始 |
| update(List<?> imageUrls) | 更新图片 | 1.4.5开始 |
| startAutoPlay() | 开始轮播 | 1.4开始,此方法只作用于banner加载完毕-->需要在start()后执行 |
| stopAutoPlay() | 结束轮播 | 1.4开始,此方法只作用于banner加载完毕-->需要在start()后执行 |
| start() | 开始进行banner渲染 | 1.4开始 |
| setOffscreenPageLimit(int limit) | 同viewpager的方法作用一样 | 1.4.2开始 |
| setBannerTitle(String[] titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) | 1.3.3结束 |
| setBannerTitleList(List titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) | 1.3.3结束 |
| setBannerTitles(List titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) | 1.4开始 |
| setDelayTime(int time) | 设置轮播图片间隔时间(单位毫秒,默认为2000) | 无 |
| setImages(Object[]/List<?> imagesUrl) | 设置轮播图片(所有设置参数方法都放在此方法之前执行) | 1.4后去掉数组传参 |
| setImages(Object[]/List<?> imagesUrl,OnLoadImageListener listener) | 设置轮播图片,并且自定义图片加载方式 | 1.3.3结束 |
| setOnBannerClickListener(this) | 设置点击事件,下标是从1开始 | 无(1.4.9以后废弃了) |
| setOnBannerListener(this) | 设置点击事件,下标是从0开始 | 1.4.9以后 |
| setOnLoadImageListener(this) | 设置图片加载事件,可以自定义图片加载方式 | 1.3.3结束 |
| setImageLoader(Object implements ImageLoader) | 设置图片加载器 | 1.4开始 |
| setOnPageChangeListener(this) | 设置viewpager的滑动监听 | 无 |
| setBannerAnimation(Class<? extends PageTransformer> transformer) | 设置viewpager的默认动画,传值见动画表 | 无 |
| setPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) | 设置viewpager的自定义动画 |
compile 'com.youth.banner:banner:1.4.9'2.在清单文件中加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> //读取外置存储卡权限 <uses-permission android:name="android.permission.INTERNET" /> //获取网络权限 3.在布局文件中加Banner
<com.youth.banner.Banner
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="高度自定义" />4.给图片集合添加数据和实例化
banner = (Banner) findViewById(R.id.banner); list=new ArrayList<>(); listtu=new ArrayList<>(); list.add("http://img.poco.cn/mypoco/myphoto/20071007/11/20071007114140_1251314291.jpg"); list.add("http://a3.att.hudong.com/72/76/01300000012339118647690465772.jpg"); list.add("http://p1.qqyou.com/pic/uploadpic/2012-4/21/2012042120062170120.jpg"); listtu.add("啦啦啦"); listtu.add("啦啦啦德玛"); listtu.add("啦啦啦西亚");5.设置Banner 属性
banner.setIndicatorGravity(BannerConfig.CIRCLE_INDICATOR);
//设置指示器位置(当banner模式中有指示器时) banner.setBannerTitles(listtu);//添加标题
banner.setImageLoader(new GlideImageLoader());
//设置图片加载器
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置banner样式 banner.setImages(list);//设置图片集合 banner.isAutoPlay(true); //设置自动轮播,默认为true
banner.setDelayTime(2500); //设置轮播时间单位毫秒
banner.start();//调用
6.图片加载器重写
注意: 1.图片加载器由自己选择,这里不限制,只是提供几种使用方法 2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器, 传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行, 切记不要胡乱强转!
public void displayImage(Context context, Object path, ImageView imageView) { //集合是String类型所以转成String Glide.with(context).load( (String) path).into(imageView); } }
最后大神链接:
https://github.com/youth5201314/banner
Banner轮播图的使用方法
//需要添加依赖和添加网络权限
compile'com.youth.banner:banner:1.4.9'
<!-- if you want to load images from the internet -->
<uses-permissionandroid:name="android.permission.INTERNET" />
<!-- if you want to load images from a file OR from the internet -->
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE" />
//控件
<com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/banner" ></com.youth.banner.Banner>
//操作
private Banner banner; private List<Data.DataBean.InfosBean> list = new ArrayList<>();
//网络上请求的数据
private String path = "http://api.kkmh.com/v1/topic_new/discovery_list?gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODM5MDM5MzE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tRmluZENhdGVnb3J5VGFiTmFtZSI6IuWFqOmDqCIsIklzQXV0b0xvYWQiOmZhbHNlLCIkbGliX3ZlcnNpb24iOiIxLjYuMzQiLCIkbmV0d29ya190eXBlIjoiV0lGSSIsIiR3aWZpIjp0cnVlLCIkbWFudWZhY3R1cmVyIjoic2Ftc3VuZyIsIkZyb21GaW5kVGFiTmFtZSI6IuaOqOiNkCIsIiRzY3JlZW5faGVpZ2h0Ijo1NzYsIkNhdGVnb3J5Ijoi5peg5rOV6I635Y-WIiwiSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCJQcm9wZXJ0eUV2ZW50IjoiUmVhZEZpbmRQYWdlIiwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCJGaW5kQ2F0ZWdvcnlUYWJOYW1lIjoi5YWo6YOoIiwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNNQ0MiLCIkbW9kZWwiOiJHVC1QNTIxMCIsIiRhcHBfdmVyc2lvbiI6IjMuOC4xIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5Iiwib3JpZ2luYWxfaWQiOiJBOjkwNTEwNDI3NjM3NTUxMDkiLCJldmVudCI6IlJlYWRGaW5kUGFnZSJ9";
//这个是固定数据的操作
// private String[] images = { // "http://l2.51fanli.net//tuan//images//1//5806eac956808.jpg", // "http://l2.51fanli.net//tuan//images//b//580991bb30560.jpg", // "http://l0.51fanli.net//tuan//images//b//58115f2593dc3.jpg", // "http://l2.51fanli.net//tuan//images//0//57923840b054d.jpg", // "http://l2.51fanli.net//tuan//images//e//58101e11ab164.jpg"};
private String[] str = new String[10];
private List<String> stringList = new ArrayList<>(); private int position=0;
//通过handler来更新ui
private android.os.Handler han = new android.os.Handler(){
@Override
public void handleMessage(Message msg) {
//找到banner控件id
banner = (Banner) findViewById(R.id.banner);
//调用方法
banner.setImageLoader(new bannerGlide());
//添加图片的集合
banner.setImages(stringList);
//设置延迟时间
banner.setDelayTime(3000);
//是否自动轮播
banner.isAutoPlay(true);
//开启
banner.start();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//这个是遍历固定数据的集合 // for (String s:images) { // stringList.add(s); // } initData(); }
//解析网络请求的数据
private void initData() {
new Thread(){
@Override
public void run() {
String s = Utils.parmrs(path);
Gson gson = new Gson();
Data data = gson.fromJson(s, Data.class);
List<Data.DataBean.InfosBean> infos = data.getData().getInfos();
list.addAll(infos);
for(Data.DataBean.InfosBean aaa:list){
List<Data.DataBean.InfosBean.BannersBean> banners = aaa.getBanners();
for (Data.DataBean.InfosBean.BannersBean banner: banners) {
stringList.add(banner.getPic());
Log.e("-----", "run: "+banner.getPic());
}
}
han.sendEmptyMessage(0);
// List<Data.DataBean.InfosBean.BannersBean> banners = infos.get(0).getBanners();
//
}
}.start();
}
//需要继承imageLoader来操作图片的加载
class bannerGlide extends ImageLoader{
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path)
.placeholder(R.mipmap.ic_launcher)
.into(imageView);
}
<!-- if you want to load images from the internet -->
<uses-permissionandroid:name="android.permission.INTERNET" />
<!-- if you want to load images from a file OR from the internet -->
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.INTERNET" />
<!-- if you want to load images from a file OR from the internet -->
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE" />
//需要添加依赖和添加网络权限
compile'com.youth.banner:banner:1.4.9'
<!-- if you want to load images from the internet -->
<uses-permissionandroid:name="android.permission.INTERNET" />
<!-- if you want to load images from a file OR from the internet -->
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE" />
//控件
<com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/banner" ></com.youth.banner.Banner>
//操作
private Banner banner; private List<Data.DataBean.InfosBean> list = new ArrayList<>();
//网络上请求的数据
private String path = "http://api.kkmh.com/v1/topic_new/discovery_list?gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODM5MDM5MzE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tRmluZENhdGVnb3J5VGFiTmFtZSI6IuWFqOmDqCIsIklzQXV0b0xvYWQiOmZhbHNlLCIkbGliX3ZlcnNpb24iOiIxLjYuMzQiLCIkbmV0d29ya190eXBlIjoiV0lGSSIsIiR3aWZpIjp0cnVlLCIkbWFudWZhY3R1cmVyIjoic2Ftc3VuZyIsIkZyb21GaW5kVGFiTmFtZSI6IuaOqOiNkCIsIiRzY3JlZW5faGVpZ2h0Ijo1NzYsIkNhdGVnb3J5Ijoi5peg5rOV6I635Y-WIiwiSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCJQcm9wZXJ0eUV2ZW50IjoiUmVhZEZpbmRQYWdlIiwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCJGaW5kQ2F0ZWdvcnlUYWJOYW1lIjoi5YWo6YOoIiwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNNQ0MiLCIkbW9kZWwiOiJHVC1QNTIxMCIsIiRhcHBfdmVyc2lvbiI6IjMuOC4xIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5Iiwib3JpZ2luYWxfaWQiOiJBOjkwNTEwNDI3NjM3NTUxMDkiLCJldmVudCI6IlJlYWRGaW5kUGFnZSJ9";
//这个是固定数据的操作
// private String[] images = { // "http://l2.51fanli.net//tuan//images//1//5806eac956808.jpg", // "http://l2.51fanli.net//tuan//images//b//580991bb30560.jpg", // "http://l0.51fanli.net//tuan//images//b//58115f2593dc3.jpg", // "http://l2.51fanli.net//tuan//images//0//57923840b054d.jpg", // "http://l2.51fanli.net//tuan//images//e//58101e11ab164.jpg"};
private String[] str = new String[10];
private List<String> stringList = new ArrayList<>(); private int position=0;
//通过handler来更新ui
private android.os.Handler han = new android.os.Handler(){
@Override
public void handleMessage(Message msg) {
//找到banner控件id
banner = (Banner) findViewById(R.id.banner);
//调用方法
banner.setImageLoader(new bannerGlide());
//添加图片的集合
banner.setImages(stringList);
//设置延迟时间
banner.setDelayTime(3000);
//是否自动轮播
banner.isAutoPlay(true);
//开启
banner.start();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//这个是遍历固定数据的集合 // for (String s:images) { // stringList.add(s); // } initData(); }
//解析网络请求的数据
private void initData() {
new Thread(){
@Override
public void run() {
String s = Utils.parmrs(path);
Gson gson = new Gson();
Data data = gson.fromJson(s, Data.class);
List<Data.DataBean.InfosBean> infos = data.getData().getInfos();
list.addAll(infos);
for(Data.DataBean.InfosBean aaa:list){
List<Data.DataBean.InfosBean.BannersBean> banners = aaa.getBanners();
for (Data.DataBean.InfosBean.BannersBean banner: banners) {
stringList.add(banner.getPic());
Log.e("-----", "run: "+banner.getPic());
}
}
han.sendEmptyMessage(0);
// List<Data.DataBean.InfosBean.BannersBean> banners = infos.get(0).getBanners();
//
}
}.start();
}
//需要继承imageLoader来操作图片的加载
class bannerGlide extends ImageLoader{
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path)
.placeholder(R.mipmap.ic_launcher)
.into(imageView);
}
<!-- if you want to load images from the internet -->
<uses-permissionandroid:name="android.permission.INTERNET" />
<!-- if you want to load images from a file OR from the internet -->
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permissionandroid:name="android.permission.INTERNET" />
<!-- if you want to load images from a file OR from the internet -->
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE" />