Android轮播图—Banner

效果图

在这里插入图片描述

导入依赖

implementation 'com.youth.banner:banner:1.4.10'  //轮播图

布局

<com.youth.banner.Banner
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:layout_marginStart="15dp"
    android:layout_marginLeft="15dp"
    android:layout_marginTop="5dp"
    android:layout_marginEnd="15dp"
    android:layout_marginRight="15dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

逻辑代码

Banner banner = getActivity().findViewById(R.id.banner);//拿到控件引用
//定义一个方法去初始化Banner控件
private void bannerView1(){
    
    //获取本地图片的轮播
        List<Integer> images = new ArrayList<>();//存放轮播的图片
        //在本地获取图片资源
        images.add(R.drawable.a);
        images.add(R.drawable.b);
        images.add(R.drawable.c);
        //设置banner样式
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
        //设置banner动画效果
        banner.setBannerAnimation(Transformer.DepthPage);
        //设置图片加载器
        banner.setImageLoader(new HeadFragment.GlideImageLoader());
        //设置图片集合
        banner.setImages(images);
        //设置自动轮播,默认为true
        banner.isAutoPlay(true);
        //设置轮播时间
        banner.setDelayTime(2000);
        //小点点居中
        banner.setIndicatorGravity(BannerConfig.CENTER);
        //banner设置方法全部调用完毕时最后调用
        banner.start();
    }
 private void bannerView2(){
    
    //获取网络图片的轮播
 		//放图片地址的集合
        list_path = new ArrayList<>();
        //放标题的集合
        list_title = new ArrayList<>(); 
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg");
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg");
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg");
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg");
        list_title.add("好好学习");
        list_title.add("天天向上");
        list_title.add("热爱劳动");
        list_title.add("不搞对象");
        //设置内置样式,共有六种可以点入方法内逐一体验使用。
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
        //设置图片加载器,图片加载器在下方
        banner.setImageLoader(new MyLoader());
        //设置图片网址或地址的集合
        banner.setImages(list_path);
        //设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验
        banner.setBannerAnimation(Transformer.Default);
        //设置轮播图的标题集合
        banner.setBannerTitles(list_title);
        //设置轮播间隔时间
        banner.setDelayTime(3000);
        //设置是否为自动轮播,默认是“是”。
        banner.isAutoPlay(true);
        //设置指示器的位置,小点点,左中右。
        banner.setIndicatorGravity(BannerConfig.CENTER)
        //以上内容都可写成链式布局,这是轮播图的监听。比较重要。方法在下面。
              .setOnBannerListener(this)
        //必须最后调用的方法,启动轮播图。
              .start();
 }
 //轮播图的监听方法
    @Override
    public void OnBannerClick(int position) {
    
    
        Log.i("tag", "你点了第"+position+"张轮播图");
    }
//自定义的图片加载器
    private class MyLoader extends ImageLoader {
    
    
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
    
    
            Glide.with(context).load((String) path).into(imageView);//这个是Glide框架加载网络图片,和下面的二选一即可
            imageView.setImageResource((Integer) path);//加载本地文件
        }
        /**
         * 自定义圆角类
         * @param context
         * @return
         */
        @Override
        public ImageView createImageView(Context context) {
    
    
            RoundImageView img = new RoundImageView(context);
            return img;

        }
    }

猜你喜欢

转载自blog.csdn.net/qq_43337254/article/details/112859142