图片轮播控件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 {@Overridepublic 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
@Override
protected 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里使用图片轮播相关推荐

  1. android 自适应图片轮播,Android使用Recyclerview实现图片轮播效果的方法

    Android使用Recyclerview实现图片轮播效果的方法 发布时间:2020-06-23 15:47:58 来源:亿速云 阅读:113 作者:清晨 这篇文章将为大家详细讲解有关Android使 ...

  2. DEDECMS后台上传banner图控制图片轮播

    将图片轮播做到后台控制,无论是dedecms还是其他的程序都是一样的重要,方便客户自己调试,不然动不动就拿FTP开刷,一个是操作不方便,增加了使用上的难度,另外也有一定的风险,很可能由于操作生疏,误操 ...

  3. 淘宝装修:第一日 —— 图片轮播

    先添加一个自定义内容区,进入源码编辑,如下图所示: 添加源码如下: <TABLE border=0 cellSpacing=0 cellPadding=0 width=773 height=22 ...

  4. 关于图片轮播的几种思路

    图片轮播我们经常在众多网站中看到,各种轮播特效在有限的空间上展示了几倍于空间大小的内容,并且有着良好的视觉效果.很多初学js的小伙伴都会拿这个来练习.我也不例外,所以在此分享几个我写轮播图的过程,代码 ...

  5. 图片轮播器,relativelayout,外加textview小结

    十多个textview,外加三个relativelayout,心烦的是图片轮播器,就环境老玄了,写了三个图片轮播器才成功,直接来代码吧,gogogo. Activity_main.xml <?x ...

  6. java postdelayed_Android开发使用Handler的PostDelayed方法实现图片轮播功能

    本文实例讲述了Android开发使用Handler的PostDelayed方法实现图片轮播功能.分享给大家供大家参考,具体如下: 第一步:创建MainActivity类 public class Ba ...

  7. android 图片轮播

    今天,简单讲讲Android图片轮播功能. 其实图片轮播功能就是使用ViewPager和Handler,网上查找了资料,把这个简单的问题写的很复杂.其实一个自定义控件完全可以解决.这里直接上代码,不在 ...

  8. unity实现图片轮播效果_Unity实现图片轮播组件

    游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播.切页按钮控制.页码下标更新.滑动轮播.切页后的回调等等 . 下面,先上一个简陋的gif动态效果图 从图中可以看出,该示例包括了 ...

  9. Handler的一个图片轮播程序

    1 Handler是什么? * Handler:用来更新UI(主线程)的一套机制,也是一套消息处理机制,我们可以发送信息,也可以通过它来处理消息. * 比如最常见的Activity的生命周期:它的回调 ...

  10. javascript实现图片轮播_第2章 第9节 JavaScript(四)

    ● 知道哪些ES6,ES7的语法 参考回答: promise,await/async,let.const.块级作用域.箭头函数 ● promise和await/async的关系 参考回答: 都是异步编 ...

最新文章

  1. 【数学】Why Study Math 为什么学习数学
  2. Oracle 语言分类 数据类型 数据类型转换 常用函数 集合操作 子查询
  3. 让tomcat运行php
  4. java ==和===_java中==和equals的区别详解
  5. arm export 汇编_C/C++与汇编混合编程有什么好处?
  6. linux数据库怎么import,mysqlimport
  7. php background-image,css background-image属性怎么用
  8. 7 款 Python 开源框架的优劣总结
  9. Xshell家庭版下载
  10. nginx服务器硬件配置要求_聚英国际|Filecoin网络对服务器硬件要求及工作流程分析...
  11. windows 远程桌面mstsc的问题
  12. 数据恢复技巧:U盘文件被隐藏怎么恢复?
  13. 中小型企业基于大数据技术的项目实践
  14. 简单版数独计算器-升级版
  15. 多家银行手机转账现高危漏洞 ,用户资金或被非法窃取
  16. 【Unity】基础知识结构总结
  17. Ansys2020r2 提示The requested data is not available.The ETABLE command is ignored
  18. okcc和vos3000呼叫中心两者间有什么作用要一起使用吗?
  19. 利用PhotoShop导出icon图标(*.ico,*.icon文件)
  20. 用xgboost模型对特征重要性进行排序

热门文章

  1. 深度迁移度量网络 Deep Transfer Metric Learning
  2. The Beer House 终于运行起来了
  3. 微信小程序获取年月日周及早上、中午、晚上
  4. cdr宏教程_CDR-VBA宏完整案例详解(上部)
  5. struts2架构网站漏洞修复详情与利用漏洞修复方案
  6. 三国演义人物关系思维导图模板分享
  7. c语言gets,getc,区分C语言中fgetc、getc、getchar、fgets、gets
  8. 周记——20151221
  9. python:tushare 获取A股指数数据,并使用LSTM预测
  10. CentOS 7 校对时间 修改时区