使用recycleview实现广告轮播
来源:互联网 发布:西西软件手机版 编辑:程序博客网 时间:2024/06/06 18:04
引子
一般情况下,我们手机 App 上轮播图一般都是几张图来回循环,最多也就10几张,一般都是在10张以内的轮播。所以我们一般可能都是自己写,还有可能用到了别人写的第三方库。由此可能由于图片轮播数量不大,所以没有考虑复用机制,以致于放上百张图片或者上千张图片轮播时,导致应用崩溃,内存溢出的情况。
由于工作的需要,需要放上百张图片轮播,所以想做一个可能能够承受住的轮播,当然最节省内存的方式可能就是复用了。其实自己写复用也可以,配合 ViewPager ,但是想到了 RecyclerView 本身自带复用效果,那为何不用 RecyclerView 做一个呢?
灵感来源
来源其实很简单,那就是前几天刚刚分享的那篇文章《使用 RecyclerView 实现 Gallery 画廊效果,并控制 Item 停留位置》 ,那 RecyclerView 既然是可以做到画廊效果,还可以控制 Item 的停留位置,那就通过这个思路就可以实现轮播图效果啊。所以就有了下面的方法。
使用方法
在这里呢,我把我实现的轮播图做成了一个轮播库放到了 GitHub 上了,有兴趣的可以直接下载源码研究一下我是怎么实现的,具体的代码介绍直接看我源码即可。
源码地址:https://github.com/loonggg/RecyclerViewBanner
先看效果图:
使用方法如下:
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
Step 2. Add the dependency
dependencies { compile 'com.github.loonggg:RecyclerViewBanner:v1.1'}
Step 3. There are a few xml attributes to customise the RecyclerViewBanner
pointFocusBg 设置底部导航小圆点的选中状态颜色pointUnfocusBg 设置底部导航小圆点的未选中状态颜色interval 设置轮播图滚动间隔时间isShowPoint 设置是否显示底部指示导航小圆点
Example
<com.loonggg.rvbanner.lib.RecyclerViewBanner android:id="@+id/rv_banner" android:layout_width="match_parent" android:layout_height="150dp" loonggg:interval="3000" loonggg:isShowPoint="true" />
Step 4. Impelement Listener
recyclerViewBanner = (RecyclerViewBanner) findViewById(R.id.rv_banner); final List<Banner> banners = new ArrayList<>(); for (int i = 0; i < 2; i++) { banners.add(new Banner("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1487221110004&di=d6043e4b0c90ddf3ea5096c3d8eb8f58&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2014%2F067%2F5116EPAUD762_1000x500.jpg")); banners.add(new Banner("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1487221129421&di=c085432cf7c15836f8a6479138740f39&imgtype=0&src=http%3A%2F%2Fimage85.360doc.com%2FDownloadImg%2F2015%2F05%2F0517%2F53199602_2.jpg")); banners.add(new Banner("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1487221161254&di=fbb99c5dad3d5a2a2c8b0b44e8c0e081&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2013%2F255%2FP52AOTE73EIG_1000x500.jpg")); } recyclerViewBanner.isShowIndicatorPoint(true); recyclerViewBanner.setRvBannerDatas(banners); recyclerViewBanner.setOnSwitchRvBannerListener(new RecyclerViewBanner.OnSwitchRvBannerListener() { @Override public void switchBanner(int position, ImageView bannerView) { Glide.with(bannerView.getContext()).load(banners.get(position % banners.size()).getUrl()).placeholder(R.mipmap.ic_launcher).into(bannerView); } }); recyclerViewBanner.setOnRvBannerClickListener(new RecyclerViewBanner.OnRvBannerClickListener() { @Override public void onClick(int position) { //点击事件 } });
源码地址:https://github.com/loonggg/RecyclerViewBanner
- 使用recycleview实现广告轮播
- 使用JavaScript实现广告轮播特效
- ViewPager实现广告轮播
- ViewPager实现广告轮播
- ViewPager实现广告轮播
- 轮播广告的实现
- 轮播广告效果实现
- ViewPager实现广告轮播
- jQuery实现轮播广告
- 使用RecyclerView + ViewPager 实现轮播广告的两个Bug
- 使用ViewPager实现广告条自动无限轮播效果
- android 使用viewpager实现广告轮播效果
- android 使用viewpager实现广告轮播效果
- Android开发中,使用ViewFlipperh实现广告轮播
- 用php实现广告轮播
- 用php实现广告轮播
- 用php实现广告轮播
- ViewPaper实现轮播广告条
- 4.React Native接入原生项目的一些问题
- 166. Fraction to Recurring Decimal
- 需求分析阶段各种图的功能
- 论文Convolutional Naural Networks for Sentence Classification--TensorFlow实现篇
- 基于深度学习的目标检测算法综述
- 使用recycleview实现广告轮播
- requests使用代理ip的方法
- 在wget获取url路径时遇到的问题
- Python定时执行任务
- struts2入门
- IOC控制反转和DI依赖注入区别
- bulk批量建立索引python
- 独木桥
- jquery 懒加载插件jquery.lazyload.js