需要一个轮播图,研究了一下,github上最好的就是这个banner了。
首先,在build.gradle中添加依赖:
implementation 'com.youth.banner:banner:1.4.10' //轮播图
这个第三方的实现效果最丰富,使用的人数最多,而且还最方便,点赞。下面是官方宣传图:
好了。下面是使用方法,首先在布局中添加上:
然后找到id,进行一些设置:
banner = view.findViewById(R.id.banner);
//设置banner样式
banner.setBannerStyle(BannerConfig.NUM_INDICATOR);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置图片集合
banner.setImages(images);
//设置轮播时间
banner.setDelayTime(2000);
//banner设置方法全部调用完毕时最后调用
banner.start();
注意,image是一个图片的集合:
private List images = new ArrayList<>();
images.add(R.drawable.a);
images.add(R.drawable.b);
images.add(R.drawable.c);
最后,写一下图片加载器,在网上只能找到获取网络图片的,官网也没找到自定义图片的,所以写一下:
public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
imageView.setImageResource((Integer) path);
}
//提供createImageView 方法,如果不用可以不重写这个方法,主要是方便自定义ImageView的创建
@Override
public ImageView createImageView(Context context) {
//使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView
return new ImageView(context);
}
}
嗯,对,就是这么简单,还有一些其他的属性可以设置:
Banner banner = (Banner) findViewById(R.id.banner);
//设置banner样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置图片集合
banner.setImages(images);
//设置banner动画效果
banner.setBannerAnimation(Transformer.DepthPage);
//设置标题集合(当banner样式有显示title时)
banner.setBannerTitles(titles);
//设置自动轮播,默认为true
banner.isAutoPlay(true);
//设置轮播时间
banner.setDelayTime(1500);
//设置指示器位置(当banner模式中有指示器时)
banner.setIndicatorGravity(BannerConfig.CENTER);
//banner设置方法全部调用完毕时最后调用
banner.start();
然后运行代码就能出来结果。下面贴出github的地址:
Github地址