在RecyclerView里使用图片轮播
来源:互联网 发布:mysql 唯一约束 编辑:程序博客网 时间:2024/06/08 06:00
图片轮播控件Banner,结合MultiType框架使用
前段时间学习了基于RecyclerView的MultiType框架,
最近在做项目的时候碰到需要在RecyclerView里使用图片轮播的功能,所以我就准备在项目中将图片轮播和MultiType框架结合使用。
为了加深印象,特将项目中的一些代码记录下来,以便以后翻阅查询。
网上的图片轮播代码不计其数,作为懒到极致的我来说自然是找个容易上手的框架更为实际。在此我用的是github上大神的框架,
这里放上作者的github地址:https://github.com/youth5201314/banner
感谢大神的无私奉献。
对于新手的我来说该框架出奇的好用,特别适合初学者和像我这样的新手。
作者的github页面是这样介绍这款框架的:
- Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式、动画、轮播和切换时间、位置、图片加载框架等!
在我粗略翻阅了一遍之后便对该框架的使用有了初步的了解,上手起来也特别容易。
以下是我结合MultiType框架开发的步骤:
1、在项目的build.gradle中添加以下依赖:
//picasso 图片加载框架compile 'it.sephiroth.android.library.picasso:picasso:2.5.2.4b'//multytype框架compile 'me.drakeet.multitype:multitype:2.4.1'//图片轮播控件compile 'com.youth.banner:banner:1.4.8'
2、将以下布局添加到布局文件中
<com.youth.banner.Banner <!-- 若作为布局文件的最外层,需要添加该行代码 --> xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/banner_fragment_first_pic_loop" android:layout_width="match_parent" android:layout_height="180dp"/>
注:该布局可以单独作为一个布局文件,也可以添加到ViewGroup中
3、自定义一个图片加载器类继承ImageLoader,并重写displayImage方法,
如下所示:
/** * 图片加载器 */public class PicLoopImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { Picasso.with(context).load((String) path).into(imageView); //图片加载也可以用Glide的框架 //Glide.with(context).load((String)path).into(imageView); }}
4、在ViewProvider里的ViewHolder里定义一个banner对象
class PicLoopViewHolder extends RecyclerView.ViewHolder { Banner banner; public PicLoopViewHolder(Banner banner) { super(banner); this.banner = banner; }}
5、随后在onCreateViewHolder方法里找到包含Banner的布局文件
@NonNull@Overrideprotected PicLoopViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) { Banner banner = (Banner) inflater.inflate(R.layout.fragment_first_pic_loop, parent, false); return new PicLoopViewHolder(banner);}
在该项目中我是将Banner的布局单独作为一个布局文件,因此上述代码直接找到的是Banner控件对象,将Banner对象直接传给ViewHolder
6、在onBindViewHolder里使用ViewHolder中的banner对象
holder.banner.setImageLoader(new PicLoopImageLoader()) //设置banner的样式 .setBannerStyle(BannerConfig.CIRCLE_INDICATOR) //这里传的是图片的地址集合 .setImages(picLoop.getImageList()) .setDelayTime(2500) //设置图片轮播的间隔 .setIndicatorGravity(BannerConfig.RIGHT) .start();
查看BannerConfig的源码可知有以下几种样式可供选择:
BannerConfig.NOT_INDICATOR=0;BannerConfig.CIRCLE_INDICATOR=1;BannerConfig.NUM_INDICATOR=2;BannerConfig.NUM_INDICATOR_TITLE=3;BannerConfig.CIRCLE_INDICATOR_TITLE=4;BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE=5;
7、在Activity或Fragment里设置RecyclerView,LayoutManager,adapter等,具体步骤查找MultiType部分的代码
放上图片轮播部分的截图:
- 在RecyclerView里使用图片轮播
- RecyclerView里嵌套带小圆点的无限轮播
- 使用unslider图片轮播
- 使用RecyclerView + ViewPager 实现轮播广告的两个Bug
- RecyclerView中使用无限轮播ViewPager的问题
- 图片轮播使用bootstrap加上手势触摸轮播
- 使用ViewPager实现图片轮播
- 使用Jquery实现图片轮播效果
- 使用ViewFlipper实现图片轮播
- 使用UICollectionView实现图片轮播
- 使用UIcollectionView实现图片轮播
- 使用jQuery实现图片轮播
- 使用ViewFlipper实现图片的轮播
- 使用viewPage实现图片轮播
- 图片轮播框架的使用
- Android 自定义轮播图片控件使用
- web前端学会使用图片轮播
- banner(图片轮播)框架的使用
- 网页的制作---笔记
- JSP学习一
- php 下划线和驼峰相互转换
- 关于ActiveMQ的简单整理(1)
- hibernate N+1问题
- 在RecyclerView里使用图片轮播
- codevs天梯 十进制转N进制 暴力模拟
- 2016届蓝桥杯省赛A组格子输出(printf(“”%*s“”)的应用)
- User_$$_javassist_1 cannot be cast to javassist.util.proxy.Proxy
- UITableView的indexPathForRowAtPoint属性
- libuv源码分析
- Android书签整理(3)
- 判断无向欧拉图模板
- 二叉搜索树Java实现