- 搭建轮播页面:开源地址https://github.com/youth5201314/banner
<com.youth.banner.Banner
android:id="@+id/banner_home_header"
android:layout_width=“match_parent”
android:layout_height=“240dp”/>
3. 添加轮播插件:
4. //开源轮播控件
implementation ‘com.youth.banner:banner:2.0.2’
5. 在安卓节点添加一段兼容性的代码:
6. compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
8. 然后,在服务端准备好轮播图片,并把轮播图片的名字存进去数据库,
9. 准备好查询方法,声明一个VO,为的是把属性的首字母在传输到App上是小写的:
12. 然后通过App来发送请求:
13. 同样,在App接收,我们也用一个类接收,实质是一样的,就是样子长得不一样:
16. Get和set长得和vs中的有点不一样;
17. 再声明一个类:HomeBannerAdapter
18. public class HomeBannerAdapter extends BannerAdapter<BannerBean, HomeBannerAdapter.BannerViewHolder> {
private Context context;
//构造函数 传递数据到适配器
public HomeBannerAdapter(List<BannerBean> mDatas,Context context) {
//设置数据,也可以调用banner提供的方法,或者自己在adapter中实现
super(mDatas);
this.context=context;
}
//创建ViewHolder,可以用viewType这个字段来区分不同的ViewHolder
@Override
public BannerViewHolder onCreateHolder(ViewGroup parent, int viewType) {
ImageView imageView = new ImageView(parent.getContext());
//注意,必须设置为match_parent,这个是viewpager2强制要求的
imageView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
return new BannerViewHolder(imageView);
}
@Override
public void onBindView(BannerViewHolder holder,BannerBean data, int position, int size) {
//holder.imageView.setImageResource(data.imageRes);
String imageUrl= ServiceUrls.getMainPageBannerImgUrl(data.getBannerPicture());
//使用Glide加载图片 最简单的用户
Glide.with(context)
.load(imageUrl)
.into(holder.imageView);
}
class BannerViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
public BannerViewHolder(@NonNull ImageView view) {
super(view);
this.imageView = view;
}
}
}
之后,再Build.gradle中添加引用implementation
20. 由于显示网络图片,要添加一个框架:
21. //开源图片加载框架 ,自带缓存的
implementation ‘com.github.bumptech.glide:glide:4.11.0’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.11.0’
22. 然后,在子页面进行轮播图片绑定:
24. 然后,轮播就做好了;
26. 轮播完成之后,我们最后需要借助生命周期来辅助:
27. @Override
public void onStart() {
super.onStart();
//开始轮播
bannerHomeHeader.start();
}
@Override
public void onStop() {
super.onStop();
//停止轮播
bannerHomeHeader.stop();
}