Android Banner实现图片轮播

Banner

首先导入应用的依赖:

implementation 'com.youth.banner:banner:1.4.9'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'com.github.bumptech.glide:glide:3.7.0'
布局文件:
<com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        />    

在这里插入图片描述

自定义一个Banner类
/**
 * @author 拉莫帅
 * @date 2017/12/19
 * @address
 * @Desc MyBanner
 */
public class MyBanner extends ImageLoader {

   public void displayImage(Context context, Object      path, ImageView imageView) {
           
        //path表示当前要显示的图片的url,,imageView表示当前要显示图片的载体     
          Glide.with(context).load((String) path).into(imageView);
    }
}

这里在在导包的时候,需要注意一下,要不然会一直提示报错

在这里插入图片描述

ImageLoader 导包文件为import com.youth.banner.loader.ImageLoader
如果发现导包为import com.nostra13.universalimageloader.core.ImageLoader是错误的

MainActivity具体实现方法

方式一:加载网络图片

    /**
     * 设置图片路径
     */
    String url1 = "https://img-blog.csdnimg.cn/8e23f386d81f4ceb8575538f83ddbf16.webp";
    String url2 = "https://img-blog.csdnimg.cn/c9af0c32506c4dcab67d3690cc97a6ba.webp";
    String url3 = "https://img-blog.csdnimg.cn/c2f4b04aa9304cbaa516173a3394a02b.webp";
    String url4 = "https://img-blog.csdnimg.cn/404ae89ac0464058b7d43a65ab106825.webp";
    String url5 = "https://img-blog.csdnimg.cn/b6ec431cc199435b92fdf7f551b5ebf7.webp";

在新建一个list集合,把图片添加到集合中

        /***
         * new一个list集合
         */
        List<String> list = new ArrayList<>();

        list.add(url1);
        list.add(url2);
        list.add(url3);
        list.add(url4);
        list.add(url5);

    
        /***
         * 设置Glide图片加载器
         */
        banner.setImageLoader(new MyBanner());
        //设置banner圆角
       //banner.setOutlineProvider(new ViewOutlineProvider() {
	  		//@Override
			//public void getOutline(View view, Outline outline) {
					//outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 30);
			//}
	   //});
       //banner.setClipToOutline(true);
        /***
         * 设置图片资源
         */
        banner.setImages(list);

        banner.start();//执行

方式二:加载本地图片

        /***
         * new一个list集合
         */
        List<String> list = new ArrayList<>();

        list.add(R.drawable.banner1);
        list.add(R.drawable.banner2);
        list.add(R.drawable.banner3);
        list.add(R.drawable.banner4);
        list.add(R.drawable.banner5);

    
        /***
         * 设置Glide图片加载器
         */
        banner.setImageLoader(new MyBanner());
        //设置banner圆角
       //banner.setOutlineProvider(new ViewOutlineProvider() {
	  		//@Override
			//public void getOutline(View view, Outline outline) {
					//outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 30);
			//}
	   //});
       //banner.setClipToOutline(true);
        /***
         * 设置图片资源
         */
        banner.setImages(list);

        banner.start();//执行

结尾

如果想要代码设置banner属性


//设置图片标题: 标题和地址相对应(根据自己需求定义)
String[] titles=new String[]{"十大星级品牌联盟,全场2折起","全场2折起","十大星级品牌联盟","嗨购5折不要停","12趁现在"};

 /**
  * 设置内置样式
  * NOT_INDICATOR 不显示小圆点
  * CIRCLE_INDICATOR 显示小圆点
  * NUM_INDICATOR 轮播图右下角1/5 按比例显示
  *
  * 校验title和image的数量
  * CIRCLE_INDICATOR_TITLE 显示小圆点(居中显示)
  * CIRCLE_INDICATOR_TITLE_INSIDE 显示小圆点(右下角显示)
  * NUM_INDICATOR_TITLE 轮播图右下角1/5 按比例显示
  */
 banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
 //设置图片加载器,图片加载器在下方
 banner.setImageLoader(new MyBanner());
 //设置图片网址或地址的集合
 banner.setImages(list);
 //设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验
 banner.setBannerAnimation(Transformer.Default);
 //设置轮播图的标题集合
 banner.setBannerTitles(Arrays.asList(titles));
 //设置轮播间隔时间
 banner.setDelayTime(3000);
 //设置是否为自动轮播,默认是“是”。
 banner.isAutoPlay(true);
 //设置指示器的位置,小点点,左中右。
 banner.setIndicatorGravity(BannerConfig.CENTER)
        //必须最后调用的方法,启动轮播图。
        .start();

//设置轮播图监听,下标是从0开始
banner.setOnBannerListener(new OnBannerListener() {
      @Override
      public void OnBannerClick(int position) {
          Log.e("banner", "OnBannerClick: " + position );
      }
});

如果我们在以上代码设置banner属性中,不想设置轮播图的标题集合,会报以下错误

解决办法:

我们设置banner设置内置样式的属性问题:
CIRCLE_INDICATOR_TITLE_INSIDE 校验title和image的数量
更换样式就可以了 类如: CIRCLE_INDICATOR

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值