1、添加依赖
//轮播图
implementation 'com.youth.banner:banner:1.4.10'
2、创建轮播图填充类对象Ad.class
public class Ad {
public String getBanner() {
return banner;
}
public void setBanner(String banner) {
this.banner = banner;
}
public Ad(String banner) {
this.banner = banner;
}
private String banner;
}
3、添加布局控件fragment_discovery.xml
<!--轮播图-->
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="@dimen/banner_height" />
4、Banner显示图片实现类GlideImageLoader .class
/**
* Banner框架显示图片的实现类
*/
public class GlideImageLoader extends ImageLoader {
/**
* 加载图片的方法
*
* @param context
* @param path
* @param imageView
*/
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//将对象转为广告对象
Ad banner = (Ad) path;
//显示图片
Glide.with(context)
.load(banner.getBanner())
.into(imageView);
}
}
5、实现banner图绑定,数据填充,点击功能
public class BannerFragemnt extends Fragment implements OnBannerListener {
/**
* 轮播图数据
*/
private List<Ad> bannerData;
@BindView(R.id.banner)
Banner banner;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_discovery,container,false);
ButterKnife.bind(this,view);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置轮播图显示得数据
bannerData=new ArrayList<>();
bannerData.add(new Ad("https://dss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=359648438,4114288232&fm=26&gp=0.jpg"));
bannerData.add(new Ad("https://dss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=359648438,4114288232&fm=26&gp=0.jpg"));
bannerData.add(new Ad("https://dss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=359648438,4114288232&fm=26&gp=0.jpg"));
showBanner(bannerData);
}
/**
* 显示轮播图数据
*
* @param data
*/
private void showBanner(List<Ad> data) {
this.bannerData = data;
banner.setOnBannerListener(this);
//设置到轮播图组件
banner.setImages(data);
//显示数据
banner.start();
//第一次也要滚动
sartBannerScroll();
}
/***
* 第一次也要滚动
*/
private void sartBannerScroll() {
banner.startAutoPlay();
}
/***
* 当前界面展示了
*/
@Override
public void onResume() {
super.onResume();
if(bannerData!=null){
//有数据才开始滚动
sartBannerScroll();
}
}
/**
* 当界面看不见了执行
*
* 包括开启新界面,弹窗,后台
*/
@Override
public void onPause() {
super.onPause();
//结束轮播图滚动
banner.stopAutoPlay();
}
/**
* 轮播图点击回调
*
* @param position
*/
@Override
public void OnBannerClick(int position) {
//获取到点击的广告对象
Ad ad = bannerData.get(position);
startActivity(new Intent(getActivity(), MainActivity.class));
Toast.makeText(getActivity(), position+"", Toast.LENGTH_SHORT).show();
}
}