开源框架Banner实现图片轮播 Banner轮播图的使用方法

 


常量

常量名称 描述 所属方法
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的自定义动画  
1.添加依赖库

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-permission android:name = "android.permission.INTERNET" />
 
<!-- if you want to load images from a file OR from the internet -->
< uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" />

猜你喜欢

转载自blog.csdn.net/qq_42120002/article/details/80418399