在RecyclerView里使用图片轮播
2017-02-04 20:16
405 查看
图片轮播控件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 @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部分的代码
放上图片轮播部分的截图:
相关文章推荐
- 使用ViewPager实现图片轮播
- android ScrollView顶部使用Viewpager的轮播图,下拉图片能放大效果
- 使用ViewFlipper实现图片轮播
- Android开发之使用viewpager实现图片轮播(二)
- 使用Android Studio 练习RecyclerView 异步加载图片,解决图片乱序问题。
- RecyclerView使用 及 滑动时加载图片优化方案
- RecyclerViewPager使用Volley的NetworkImageView翻页时图片有时不显示
- 使用UICollectionView实现图片轮播
- 解决RecyclerView中使用UIL加载网络图片,在刷新时出现闪烁问题
- iOS开发中使用UIScrollView实现图片轮播和点击加载
- RecyclerView使用 及 滑动时加载图片优化方案
- Android使用ViewPager实现图片轮播(高度自适应,左右循环,自动轮播)
- RecyclerView使用 及 滑动时加载图片优化方案
- viewFlipper的使用实现自动轮播广告图片
- Android 控件使用教程(二)—— RecyclerView 展示图片
- 在Android studio中使用viewpager创建出图片轮播效果
- 使用UIcollectionView实现图片轮播
- iOS:实现图片的无限轮播之使用第三方库SDCycleScrollView
- Android中ViewPager的使用(二):实现图片轮播效果
- Swift 使用CollectionView 实现图片轮播封装