
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