AdPlayBanner:功能丰富、一键式使用的图片轮播插件
AdPlayBanner:功能丰富、一键式使用的图片轮播插件
AdPlayBanner是一个Android平台基于ViewPager实现的轮播图插件,主要用以自动或者手动地播放轮播图,提供了Fresco、Picasso、Glide等图片加载方式供用户使用,以及多种图片切换动画,设置轮播时间,设置数据源顺序,提供不同分页指示器等功能,实现了一键式、灵活式的控件使用方式。
目前AdPlayBanner已经开源到了Github上面,大家可以在Github上面查看本控件的Demo,或者直接使用。
Github地址为:github.com/ryanlijianc…
一、使用方法
1.添加依赖
首先,在项目级别的`build.gradle`文件添加依赖:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
然后,在模块目录下的build.gradle文件添加依赖:
dependencies {
compile 'com.github.ryanlijianchang:AdPlayBanner:v0.2'
}
2.在布局文件中添加控件
在布局文件中添加AdPlayBanner控件,根据自己的需要设置高度,注意,控件需要在一个布局(可以是LinearLayout,RelativeLayout,FrameLayout等)之内。
<com.ryane.banner_lib.AdPlayBanner
android:id="@+id/game_banner"
android:layout_width="match_parent"
android:layout_height="200dp" />
3.在Activity中绑定控件
mAdPlayBanner = (AdPlayBanner) findViewById(R.id.game_banner);
4.添加网络权限
由于加载的是网络图片,所以需要在Manifests文件中添加网络请求权限
<uses-permission android:name="android.permission.INTERNET" />
5.初始化Fresco
默认使用Fresco加载图片,所以按照Fresco官方做法,需要在Application创建时初始化Fresco,常规做法如下:
(1) 创建MyApplication类继承Application,然后在onCreate()方法中初始化Fresco:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
(2) 在Manifests文件中<application>标签中增加 android:name="你的类名":
<application
android:name=".MyApplication"
...>
...
</application>
当然,如果你不使用Fresco加载,以上步骤可以跳过。
6.一键式使用
AdPlayBanner使用了Builder设计模式,所以可以通过一键式写法来直接装载AdPlayBanner,当然也可以使用常规写法。在使用之前需要先设置数据源,使用ArrayList<AdPageInfo>来封装数据,而AdPageInfo是一个封装好的Bean类,封装如下:
public class AdPageInfo implements Parcelable {
public String title; // 广告标题
public String picUrl; // 广告图片url
public String clickUlr; // 图片点击url
public int order; // 顺序
}
在设置完数据源mDatas之后,使用Builder模式写法,一句话就可以使用AdPlayBanner了。注意,setUp()方法必须在调用完所有API之后,最后调用:
mAdPlayBanner.setInfoList(mDatas).setUp();
当然,你也可以使用常规写法:
mAdPlayBanner.setInfoList(mDatas);
mAdPlayBanner.setUp();
二、功能介绍
1.自定义数据顺序
在调用setUp()方法之前,我们需要设置数据源,每一页的数据使用AdPageInfo来封装,它里面就有一个int型变量order,我们通过给每一个AdPageInfo赋值order,AdPlayBanner就会自动按照order的大小来排序,如:
我们封装了三个数据到ArrayList里面,按顺序是图片1->图片2->图片3
List<AdPageInfo> mDatas = new ArrayList<>();
AdPageInfo info1 = new AdPageInfo("图片1", "http://osjnd854m.bkt.clouddn.com/pic1_meitu_1.jpg", "链接1", 3);
AdPageInfo info2 = new AdPageInfo("图片2", "http://osjnd854m.bkt.clouddn.com/pic1_meitu_2.jpg", "链接2", 2);
AdPageInfo info3 = new AdPageInfo("图片3", "http://osjnd854m.bkt.clouddn.com/pic1_meitu_3.jpg", "链接3", 1);
mDatas.add(info1);
mDatas.add(info2);
mDatas.add(info3);
装载之后运行,可见轮播顺序是按照order的顺序来播放:
2.无限循环轮播
很多轮播插件没有实现无限循环轮播这个功能, 而在AdPlayBanner上得到了实现,如下图可见,当我们无限循环滑动时,插件仍能正常运行:
3.支持三种图片加载方式
目前比较主流的Fresco、Picasso、Glide三种图片加载方式在AdPlayBanner中都支持,至于三者的区别我就不赘述了,默认是使用Fresco方式加载,具体调用方法setImageLoadType(ImageLoaderType type),只需要将传入数据设置为:FRESCO、GLIDE、PICASSO其中一种即可,同样,也是可以通过代码一键式使用,例如使用Glide方式加载(其他加载方式使用类似),使用方法如下:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setImageLoadType(Glide) // 设置Glide类型的图片加载方式
.setUp();
4.支持多种ScaleType
在AdPlayBanner中,可以根据用户需要设置图片的ScaleType,具体效果和ImageView的ScaleType一致,默认是使用FIT_XY,但是在AdPlayBanner中比ImageView少了一种MATRIX类型,在AdPlayBanner中具体支持的ScaleType有如下:FIT_XY、FIT_START、FIT_CENTER、FIT_END、CENTER、CENTER_CROP、CENTER_INSIDE其中,具体调用方法setImageViewScaleType(ScaleType scaleType),只需要将具体的ScaleType传入即可,同样,也是可以通过代码一键式使用,例如设置ScaleType为FIT_START(其他类似),使用方法如下:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setImageViewScaleType(FIT_START) // 设置FIT_START类型的ScaleType
.setUp();
5.支持不同页码指示器
在AdPlayBanner中,提供了数字型、点型和空型页码指示器,用户可以通过调用setIndicatorType(IndicatorType type),传入NONE_INDICATOR,NUMBER_INDICATOR,POINT_INDICATOR其中一种,即可显示对应的页码指示器,三种页码指示器对应效果如下:
(1) NONE_INDICATOR:空型页码指示器
(2) NUMBER_INDICATOR:数字页码指示器
(3) POINT_INDICATOR:点型页码指示器
使用方法也是非常简单,如我需要使用数字型页码指示器,使用方法如下:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setIndicatorType(NUMBER_INDICATOR) //使用数字页码指示器
.setUp();
此外,你也可以调用setNumberViewColor(int normalColor, int selectedColor, int numberColor)来修改数字型页码指示器的样式,normalColor为数字没选中时的背景颜色,selectedColor为数字选中时的背景颜色,numberColor为数字的字体颜色,例如我通过调用这个方法,把三个颜色都改变掉(注意:传入int型颜色必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效),使用方法如下:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setIndicatorType(NUMBER_INDICATOR) //使用数字页码指示器
.setNumberViewColor(0xff00ffff, 0xffff3333, 0xff0000ff)
.setUp();
得到如下效果:
6.添加灵活性标题
在AdPlayBanner中,只需要调用addTitleView(TitleView mTitleView),就可以插入标题了,并且该标题的灵活性很强,可以根据用户需要修改标题的背景、位置、字体大小、padding、magin等,先上一个提供的默认效果:
由于是使用了默认的效果,所以用法也是非常简单:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setIndicatorType(POINT_INDICATOR) //使用数字页码指示器
.addTitleView(TitleView.getDefaultTitleView(getApplicationContext())) // 使用默认标题
.setUp();
我们可以看到我们通过调用addTitleView(TitleView mTitleView),传入一个TitleView即可以生成标题,而上面是调用了AdPlayBanner提供的一个默认标题,当然,我们也说了这个标题的灵活性很强,就是我们可以设置TitleView的属性,我们来看一下TitleView提供了哪些API:
- TitleView setTitleColor(int color):设置标题字体颜色,传入color必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效。
- setPosition(Gravity gravity):设置标题在AdPlayBanner中的位置,有PARENT_TOP,PARENT_BOTTOM,PARENT_CENTER三个取值,分别位于父布局顶部,父布局底部,父布局中间。
- setViewBackground(int color):设置标题的背景颜色,传入int型颜色必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效。
- TitleView setTitleSize(int size):设置标题的字体大小,单位是sp。
- setTitleMargin(int left, int top, int right, int bottom):设置标题的四个方向margin值,单位是dp。
- setTitlePadding(int left, int top, int right, int bottom):设置标题的四个方向padding值,单位是dp。
同样,TitleView也是支持Builder模式的写法,例如我自定义一个TitleVIew并加到AdPlayBanner中,使用方法如下:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setIndicatorType(POINT_INDICATOR) // 使用数字页码指示器
.addTitleView(new TitleView(getApplicationContext()) // 创建新的TitleView
.setPosition(PARENT_TOP)
.setTitleColor(0xffffffff) // 设置字体颜色
.setViewBackground(0x9944ff18) // 设置标题背景颜色
.setTitleSize(18) // 设置字体大小
.setTitleMargin(0,0,2,0) // 设置margin值
.setTitlePadding(2,2,2,2)) // 设置padding值
.setUp();
效果如下:
7.支持多样式切换动画
由于AdPlayBanner是基于ViewPager实现的,所以AdPlayBanner和ViewPager一样,同样支持自定义的切换动画,只需要通过调用setPageTransfromer(ViewPager.PageTransformer transformer)方法,传入一个PageTransformer,即可改变它的切换样式,AdPlayBanner中提供了三种现成的切换方式:
- FadeInFadeOutTransformer:淡入淡出效果
- RotateDownTransformer:旋转效果
- ZoomOutPageTransformer: 空间切换效果
使用起来也是非常简单,例如使用ZoomOutPageTransformer切换效果:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setIndicatorType(POINT_INDICATOR) // 使用数字页码指示器
.setBannerBackground(0xff000000) // 设置背景颜色
.setPageTransfromer(new ZoomOutPageTransformer()) // 设置切换效果
.setUp();
当然,你也可以自定义一个transformer实现ViewPager.PageTransformer接口,并重写transformPage(View view, float position)方法即可实现自定义的切换效果。
8.设置是否自动轮播
通过调用setAutoPlay(boolean autoPlay),传入boolean值控制是否自动播放的开关,传入true为自动,传入false为手动。
9.设置自动滑动间隔时间
通过调用setInterval(int interval),传入int型的时间(单位ms),即可改变AdPlayBanner自动轮播时的切换时间。
10.设置点击事件监听器
AdPlayBanner支持点击事件监听,通过调用setOnPageClickListener(OnPageClickListener l),传入OnPageClickListener,即可完成AdPlayBanner的点击监听,使用方法非常简单:
mAdPlayBanner
.setInfoList((ArrayList<AdPageInfo>) mDatas)
.setIndicatorType(POINT_INDICATOR) // 使用数字页码指示器
.setOnPageClickListener(new AdPlayBanner.OnPageClickListener() {
@Override
public void onPageClick(AdPageInfo info, int postion) {
// 点击操作
}
})
.setUp();
三、API
AdPlayBanner:实现轮播效果的控件
TitleView:标题控件
AdPageInfo:AdPlayView指定的数据源
四、版本特性
v0.1
- 基本框架搭建完成;
V0.2
- 支持定义数据顺序;
- 无限循环轮播;
- 支持Fresco、Glide、Picasso三种图片加载方式;
- 支持多种ScaleType; 支持点型、数字型、空型页码指示器;
- 支持修改数字型页码器的样式;
- 支持灵活性标题;支持修改标题的位置、字体大小、颜色、边距值等属性;
- 支持多样式切换动画;
- 支持设置自动轮播开关;
- 自定义自动滑动间隔时间;
- 提供点击事件监听器;
- 支持修改AdPlayBanner的背景颜色;
五、Demo
如果大家在使用在仍然有问题,可以通过下载Demo来学习,当然,大家更可以通过查看源代码来学习如何自定义一个轮播控件。
六、后记
AdPlayBanner作为作者的第一个开源控件,作者也是非常用心认真地完成,这个过程也学习到很多东西,可能其中会遇到很多错误,所以希望大家可以多多包涵,然后把错误提到Issues里面,作者会在看到的第一时间进行修正。在后面的时间里,作者也会将更多的特性加到这个控件里面,所以希望大家可以加个star,以作为对作者的小小鼓励。 当然,如果你想第一时间联系到作者,不妨尝试以下联系方式:
- Email:liji.anchang@163.com
- CSDN:blog.csdn.net/ljcitworld
- Github:github.com/ryanlijianc…
AdPlayBanner:功能丰富、一键式使用的图片轮播插件的更多相关文章
- jQuery.YesShow - 图片轮播插件(带图片放大功能)
jQuery.YesShow - 图片轮播插件(带图片放大功能) 使用简单,原文件只要这样就可以了:<div id="yes"> <ul> ...
- 12款经典的白富美型—jquery图片轮播插件—前端开发必备
图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美 ...
- Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示
用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件 ...
- PgwSlideshow-基于Jquery的图片轮播插件
0 PgwSlideshow简介 PgwSlideshow是一款基于Jquery的图片轮播插件,基本布局分为上下结构,上方为大图轮播区域,用户可自定义图片轮播切换的间隔时间,也可以通过单击左右方向按键 ...
- Nivo Slider - 世界上最棒的 jQuery 图片轮播插件
Nivo Slider 号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如 ...
- 纯js写图片轮播插件
最近终于写成了自己创作的图片轮播插件,使用原生js编写.与目前网上流行的轮播插件相比,功能和效果稍弱,但是使用起来相当方便. 先看html代码 <!DOCTYPE html> <ht ...
- 图片轮播插件-carouFredSel
carouFredSel图片轮播插件基于Jquery,比较常规的轮播插件,支持滚轮及键盘左右按键,加入其它插件可实现更加复杂的特效. 主页地址:http://caroufredsel.dev7stud ...
- JQuery插件之图片轮播插件–slideBox
来源:http://www.ido321.com/852.html 今天偶然发现了一个比较好用的图片轮播插件—slideBox 先看看效果:http://slidebox.sinaapp.com/ 代 ...
- 图片轮播插件 Slides-SlidesJS-3
图片轮播插件 Slides-SlidesJS-3 demo document 地址: http://slidesjs.com/
随机推荐
- windows端口占用处理工具
一.描述 笔者在最近使用tomcat时,老是会遇到这种端口占用的问题,便写了这个小的exe,用于解决windows下的端口占用问题. 好吧,其实是我实在记不住CMD下的那几行命令.这玩意的实现比较简单 ...
- jenkins跑maven项目的时候报错,看评论
Started by user admin Building in workspace /var/jenkins_home/workspace/helloworld [WS-CLEANUP] Dele ...
- 【源码分享】mui实现简单的手机音乐播放器
mui实现简单的手机音乐播放器 最近先来无事,我用mui写了一个可以跨页面控制的音乐播放器.主要功能有上一曲,下一曲,播放,暂停,感兴趣的可以继续看下去. 说的总是不实在,直接上源码,有兴趣的可以读下 ...
- linux软件包介绍
一. 软件包的种类 源码包 二进制包(rpm包.系统默认包) 二. 优缺点对比 源码包 源码包的优点 1) 开源,源码可见,且可以修改 2) 配置更加灵活,可以自由选择所需的功能 3) 软件是编译安装 ...
- Java+XSL合并多个XML文件
使用 Java 解析 XML 文件有许多成熟的工具,如 dom4j 等等.但在一些场景中,我们可能使用 Ant.Maven 等构建工具对多个 XML 文件进行合并,我们希望可以直接通过脚本文件,或者简 ...
- 音乐API之QQ音乐
欢迎大家来到我的博客,这是我在博客园写的第一篇文章,但不会是最后一篇,希望大家多多关注我,支持我哦!正文开始,今天我们要讲的是QQ音乐的API,都是来源于官方的地址,以前我也想写一个,但百度谷歌之后都 ...
- Chapter 2. Video Formats and Quality
本章节主要介绍一些视频格式相关的基础知识. 交织(Interlace) 即每一个采样帧采样时隔行采样,奇数行和偶数行交替. YCbCr 人眼视觉系统(Human Visual System, HVS) ...
- 【Android Developers Training】 73. 布局变化的动画
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 微信支付(APP)
折腾了一天,终于搞定了微信支付,总结一下.首先从服务器端获取prepareid,Andorid 端再根据这个prepareid二次签名. 服务器端: 从官网上下载DEMO,Demo中只有JsAPi,M ...
- I/O多路复用之epoll实战
概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程 通俗理解(摘自网上一大神) 这些名词比较绕口,理解涵义就好.一个epoll场景:一个酒吧服务员(一个线程),前 ...