Android萌新一枚,最近项目中有一个轮播图的需求,网上搜了很多资料,也看了多开源库,但不是bug多就是库不维护。后来在GitHub上找到一个很棒的轮播图–BannerViewPager库推荐个大家。

它的使用方法很简单,也是我看过其他库里边使用最简单的一个。

1.gradle中添加依赖

在项目的root build.gradle中添加如下配置,这个配置是需要添加到项目根目录下的gradel文件中的。

allprojects {repositories {...maven { url 'https://www.jitpack.io' }}}

然后在项目app目录下的gradle中添加BannerViewPager的依赖:

implementation 'com.github.zhpanvip:BannerViewPager:3.4.0'

然后在Activity的布局文件中添加BannerViewPager:

    <com.zhpan.bannerview.BannerViewPagerandroid:id="@+id/banner_view"android:layout_width="match_parent"android:layout_margin="10dp"android:layout_height="160dp" />

2.Banner的页面布局

这个是我们Banner的item页面布局文件,Item的布局必须是"match_parent",否则会抛出一个IllegalStateException.

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/banner_image"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="centerCrop" /></RelativeLayout>

3.编写Adapter

创建一个BannerAdapter并集成BaseBannerAdapter,BaseBannerAdapter是一个泛型类,需要指定Item的数据的实体类。然后重写getLayoutId方法,返回上边写的布局文件。最后重写bindData方法,并这个方法里边绑定数据即可

public class BannerAdapter extends BaseBannerAdapter<BannerData> {@Overrideprotected void bindData(BaseViewHolder<BannerData> holder, BannerData data, int position, int pageSize) {ImageView imageView = holder.findViewById(R.id.banner_image);Glide.with(imageView).load(data.getImageUrl()).into(imageView);}@Overridepublic int getLayoutId(int viewType) {return R.layout.item_banner;}
}

(5)在Activity中创建BannerViewPager

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);BannerViewPager<BannerData> bannerViewPager = findViewById(R.id.banner_view);bannerViewPager.setAdapter(new BannerAdapter()).setLifecycleRegistry(getLifecycle()).create(getBannerData());}private List<BannerData> getBannerData() {List<BannerData> list = new ArrayList<>();BannerData bannerData1 = new BannerData();bannerData1.setImageUrl("https://ss1.baidu.com/9vo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/a044ad345982b2b75133e15130adcbef77099bf3.jpg");BannerData bannerData2 = new BannerData();bannerData2.setImageUrl("https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/d009b3de9c82d1582442d267820a19d8bd3e4220.jpg");BannerData bannerData3 = new BannerData();bannerData3.setImageUrl("https://ss3.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/0824ab18972bd407ff38f2b378899e510eb30984.jpg");list.add(bannerData1);list.add(bannerData2);list.add(bannerData3);return list;}

因为上边代码中的数据是写死的,可以直接通过create(getBannerData())方法创建数据。但是如果数据是从服务器拿到的则可以调用create()方法,等到拿到服务器数据后在通过refreshData方法刷新即可。代码如下:

  bannerViewPager.setAdapter(new BannerAdapter()).setLifecycleRegistry(getLifecycle()).create();bannerViewPager.refreshData(dataList);

这样,就完成了一个自动无限轮播的ViewPager了,并且带有一个默认的圆形指示器,效果如下图所示:


是不是非常简单呢?当然,这还是最基本的用法,这个库还提供了很多的配置,包括页面样式,还有很多炫酷的指示器样式。下边稍微修改一下代码:

bannerViewPager.setAdapter(new BannerAdapter()).setLifecycleRegistry(getLifecycle()).setIndicatorSliderColor(getResources().getColor(R.color.purple_200), getResources().getColor(R.color.purple_500)).setIndicatorSlideMode(IndicatorSlideMode.WORM).setPageStyle(PageStyle.MULTI_PAGE_OVERLAP).setRevealWidth(getResources().getDimensionPixelOffset(R.dimen.margin)).create(getBannerData());

相比上边仅仅添加了四行代码,再来看效果:

哈哈,有没有很酷!这个库支持的效果还不仅仅是这些,具体效果大家可以点击BannerViewPager链接到GitHub查看。
最后,欢迎大家点赞呀!

一个很Nice的Android Banner轮播图库相关推荐

  1. android 炫酷轮播图,一个很Nice的Android Banner轮播图库

    Android小白一枚,最近项目中有一个轮播图的需求,网上搜了很多资料,也看了多开源库,但不是bug多就是库不维护.后来在GitHub上找到一个很棒的轮播图–BannerViewPager库推荐个大家 ...

  2. html轮播图淡入淡出,一个简洁的Jquery效果 banner轮播(1) 淡入淡出效果

    朋友给我看了一个轮播效果,把js下载一看,丫丫的一个这么简单的效果,这么的就能写个几百行的,严重影响浏览器加载速度嘛,以为人家宽带流量不要钱玩的哦..无奈之下给他写了个简单的,把所有代码放上去都没有超 ...

  3. android开源轮播图框架,最好用的轮播插件框架都在这里了,Github流行轮播框架...

    一般来说,一个完整的WEB项目都少不了使用JavaScript轮播插件.对于整个简单的轮播插件,有时会我们会要求它有更可控的样式,不同的使用场景也需要不同的样式,最理想的轮播插件就是可定制.除了原生开 ...

  4. Android Studio Banner轮播图

    Banner轮播图 使用步骤 代码片段 使用步骤 1.导依赖 2.写布局 3.图片集合(图片网址,图片资源id),标题集合 4.常用方法 图片集合 banner.setImages(imgs); 加载 ...

  5. android 层叠轮播,vue手写一个卡片化层叠轮播(支持滑动,移动端连续滚动,点击)...

    项目需求,需要写一个卡片化层叠的轮播,找了下插件都没有合适的,于是写了一个展示5个卡片的轮播 先看效果图: 卡片化层叠轮播 5个卡片要计算各自的高度,宽度,利用相对定位计算出各自的位置 然后trans ...

  6. android 图片轮播

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

  7. 游戏陪玩源码开发,仿某看书app首页Banner轮播+背景渐变

    在游戏陪玩源码开发时,会设计到很多UI界面设计,其中首页Banner轮播就很重要,最近发现一个比较有意思的效果图,于是想自己操作实践下.效果图如下: 作者实现的效果: 1. 游戏陪玩源码开发,仿某看书 ...

  8. android 图片轮播组件,Android客户端实现图片轮播控件

    本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下 1. 轮播控件的组成部分 我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成: 首先我们要有用来显示 ...

  9. Android图片轮播第三弹,给你想不到的惊喜

    前言 之前写了两篇图片轮播的文章,分别是http://blog.csdn.net/u011077027/article/details/50771851(android图片轮播第一弹_异步获取和本地获 ...

最新文章

  1. python:urllib2.URLError urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
  2. Android组件的通讯-Intent
  3. 离散时间系统的相位响应
  4. MySQL本人工具使用
  5. [转]系统吞吐量(TPS)、用户并发量、性能测试概念和公式---学习
  6. linux中tree命令
  7. bat java 启动脚本_从bat脚本运行的Java应用程序上的Windows关闭挂钩
  8. [转载]C#操作符??和?:
  9. TDH Inceptor 操作实战案例之 验证ACID
  10. 【计算机架构】什么是云原生?云原生如何解释?What is cloud native?通俗解释云原生
  11. java游戏后端日志【6】 -- 初生牛犊不怕虎?
  12. 学会学习 学会交往——访我校85级机电系毕业生辛平
  13. 网络工程管理 第四章 路由器 RIP OSPF 及配置实验
  14. 集装箱编号校验码规则及java程序的实现
  15. 计算机 手机原理是什么,什么是手机投屏,手机投屏到电脑上的原理
  16. jvm性能分析工具之-- Eclipse Memory Analyzer tool(MAT)
  17. NestJS 7.x 折腾记: (4) Swagger接入及相关用法
  18. 软考架构师 | 03 软件工程
  19. sina微博api:获取24小时内前20条用户的微博信息
  20. End-to-End Entity Resolution for Big Data: A Survey Matching部分学习笔记

热门文章

  1. matlab基本矩阵运算,MATLAB矩阵及其运算
  2. 常用java工具代码备忘
  3. 用UE进行ftp连接不成功
  4. Scratch案例——巧解数学题,求累加和
  5. 使火狐浏览器默认在新的标签页打开书签
  6. RationalDMIS 2020 “拟合坐标系”功能
  7. python3.6 + tensorflow1.9.0安装教程
  8. 立创开源丨红外手电筒遥控器(大功率)
  9. SiamFC++与SiamBAN
  10. 快递已经签收怎么查询快递的信息