犹记得第一次banner时的情形,因为这个东西三四天才完成。废话不多说直接开始下面是百度网盘链接需要的自行下载
提取码:1234http://链接:https://pan.baidu.com/s/1_U1qwuDifFeM1bOG9_LbzA
我用的是bnner2.1.0版本因为我这个是有文件的,记得这个是arr的文件要引进打开构建脚本
build.gradle
这就引进了下面是相关的操作我总结了一下重点讲一下2.0的banner由viewpager和recyclerview做的写法跟recyclerview.adapter写法差不多,接下来看图如果是新手跟我的步数一起来不然出错
先看效果图(注意白色小圆圈待会说的):
1.创建布局:![](https://img-blog.csdnimg.cn/6d1af00b30554604b5f63f2133f26b93.png)
banner_radius:表示图片边角的弧度
banner_loop_ time:表示每次自动循环间隔为多长(这里我是2秒 (1000毫秒为一秒) )
其他的属性没什么好讲每种控件都有的
2.在拥有这个布局的Activity中开始写代码:
banner是找id取得名字还有就是bannerAdapter是自己写的 (记得找id),其他的看图就明白了除了其实banner还有很多用法但这些对于新手够用了,实在不行可以去看看其他博主的写的
3.开始写适配器:
public class bannerAdapter extends BannerAdapter<bannerPhotos.RowsBean,bannerAdapter.Holder> {
//list必须跟bean一致
private Context context;
private String imagesUrl;
private String title;
public bannerAdapter(List<bannerPhotos.RowsBean> datas,Context context) {
super(datas);
this.context=context;
}
@Override
public bannerAdapter.Holder onCreateHolder(ViewGroup viewGroup, int i) {
return new Holder(LayoutInflater.from(context).inflate(R.layout.banner_layout,viewGroup,false));
}
@Override
public void onBindView(bannerAdapter.Holder holder, bannerPhotos.RowsBean rowsBean, int i, int i1) {
imagesUrl="http:124.93.196.45:10001"+rowsBean.getAdvImg();
title=rowsBean.getAdvTitle();
Glide.with(context).load(imagesUrl).into(holder.imageView);
}
public class Holder extends RecyclerView.ViewHolder {
private ImageView imageView;
public Holder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.imageView4);
}
}
}
ok这里应该就是最难理解的地方接下来你将看到最仔细的讲解,新手一定要逐行读完不然就跟我一样稀里糊涂的要好几天才明白。废话不多说开始
第一行理解其实就行了我们看源码(只截图一部分):
public abstract class BannerAdapter<T, VH extends ViewHolder> extends Adapter<VH>ddimplements IViewHolder<T, VH> { protected List<T> mDatas = new ArrayList();
也就是说这个BannerAdapter第一个参数是list<类名>这个类名就是照片类这个有Java基础不难的第二个参数是继承view.holder的一个类,外部类或者内部类都行。个人建议内部类。除了最后一句内部类其余的你写好的头之后它会出现红色部分把鼠标焦点放在上面按alt+enter就补全了,熟悉recyclerview用法的小伙伴肯定知道剩下的怎么写。为了照顾新手我还是讲解一下吧。为了防止文字过多而造成而造成影响。我就节略的讲解一下。
- 第一个方法是构造方法主要是传递参数的
- 第二个方法绑定view他返回的是你下面写的内部类(这里有个重点就是第一行时那个viewholder参数你可以提前命名然后继承一下viewholder)
- 第三个方法就是相关的操作了我这里的glide是一个第三方库加载网络图片的实际只要你创建了照片类然后初始化在通过构造方法传进来就行了
- 内部类这个继承自recyclerview.viewholder它需要传进一个布局也就是跟第二个方法联系起来了这就是子布局
做完这些就能出现我上面的样例图了。制作这个来纪念我这个小白当初在这上面找了好久的痛苦其中有什么不对请各位请教,也希望对小白有用谢谢各位