转载地址:https://github.com/youth5201314/bannerhtml
参考视频:http://ke.atguigu.com/course/150git
XFrame - Android快速开发框架github
XFrame详细功能文档预览apache
如今的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能。由于ViewPager并不支持循环翻页, 因此要实现循环还得须要本身去动手,我就把项目中的控件剔了出来,但愿你们以为有用。目前框架能够进行不一样样式、不一样动画设置, 以及完善的api方法能知足大部分的需求了。api
模式 | 图片 |
---|---|
指示器模式 | ![]() |
数字模式 | ![]() |
数字加标题模式 | ![]() |
指示器加标题模式 垂直显示 |
![]() |
指示器加标题模式 水平显示 |
![]() |
常量名称 | 描述 | 所属方法 |
---|---|---|
BannerConfig.NOT_INDICATOR | 不显示指示器和标题 | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR | 显示圆形指示器 | setBannerStyle |
BannerConfig.NUM_INDICATOR | 显示数字指示器 | setBannerStyle |
BannerConfig.NUM_INDICATOR_TITLE | 显示数字指示器和标题 | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE | 显示圆形指示器和标题(垂直显示) | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE | 显示圆形指示器和标题(水平显示) | setBannerStyle |
BannerConfig.LEFT | 指示器居左 | setIndicatorGravity |
BannerConfig.CENTER | 指示器居中 | setIndicatorGravity |
BannerConfig.RIGHT | 指示器居右 | setIndicatorGravity |
ViewPagerTransforms 动画时集成的第三方库,可能有兼容问题致使position位置不许确,你能够选择参考动画而后自定义动画
数组
常量类名 |
---|
Transformer.Default |
Transformer.Accordion |
Transformer.BackgroundToForeground |
Transformer.ForegroundToBackground |
Transformer.CubeIn |
Transformer.CubeOut |
Transformer.DepthPage |
Transformer.FlipHorizontal |
Transformer.FlipVertical |
Transformer.RotateDown |
Transformer.RotateUp |
Transformer.ScaleInOut |
Transformer.Stack |
Transformer.Tablet |
Transformer.ZoomIn |
Transformer.ZoomOut |
Transformer.ZoomOutSlide |
方法名 | 描述 | 版本限制 |
---|---|---|
setBannerStyle(int bannerStyle) | 设置轮播样式(默认为CIRCLE_INDICATOR) | 无 |
setIndicatorGravity(int type) | 设置指示器位置(没有标题默认为右边,有标题时默认左边) | 无 |
isAutoPlay(boolean isAutoPlay) | 设置是否自动轮播(默认自动) | 无 |
setViewPagerIsScroll(boolean isScroll) | 设置是否容许手动滑动轮播图(默认true) | 1.4.5开始 |
update(List<?> imageUrls,List titles) | 更新图片和标题 | 1.4.5开始 |
update(List<?> imageUrls) | 更新图片 | 1.4.5开始 |
startAutoPlay() | 开始轮播 | 1.4开始,此方法只做用于banner加载完毕-->须要在start()后执行 |
stopAutoPlay() | 结束轮播 | 1.4开始,此方法只做用于banner加载完毕-->须要在start()后执行 |
start() | 开始进行banner渲染 | 1.4开始 |
setOffscreenPageLimit(int limit) | 同viewpager的方法做用同样 | 1.4.2开始 |
setBannerTitle(String[] titles) | 设置轮播要显示的标题和图片对应(若是不传默认不显示标题) | 1.3.3结束 |
setBannerTitleList(List titles) | 设置轮播要显示的标题和图片对应(若是不传默认不显示标题) | 1.3.3结束 |
setBannerTitles(List titles) | 设置轮播要显示的标题和图片对应(若是不传默认不显示标题) | 1.4开始 |
setDelayTime(int time) | 设置轮播图片间隔时间(单位毫秒,默认为2000) | 无 |
setImages(Object[]/List<?> imagesUrl) | 设置轮播图片(全部设置参数方法都放在此方法以前执行) | 1.4后去掉数组传参 |
setImages(Object[]/List<?> imagesUrl,OnLoadImageListener listener) | 设置轮播图片,而且自定义图片加载方式 | 1.3.3结束 |
setOnBannerClickListener(this) | 设置点击事件,下标是从1开始 | 无(1.4.9之后废弃了) |
setOnBannerListener(this) | 设置点击事件,下标是从0开始 | 1.4.9之后 |
setOnLoadImageListener(this) | 设置图片加载事件,能够自定义图片加载方式 | 1.3.3结束 |
setImageLoader(Object implements ImageLoader) | 设置图片加载器 | 1.4开始 |
setOnPageChangeListener(this) | 设置viewpager的滑动监听 | 无 |
setBannerAnimation(Class<? extends PageTransformer> transformer) | 设置viewpager的默认动画,传值见动画表 | 无 |
setPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) | 设置viewpager的自定义动画 | 无 |
Attributes | forma | describe |
---|---|---|
delay_time | integer | 轮播间隔时间,默认2000 |
scroll_time | integer | 轮播滑动执行时间,默认800 |
is_auto_play | boolean | 是否自动轮播,默认true |
title_background | color | reference |
title_textcolor | color | 标题字体颜色 |
title_textsize | dimension | 标题字体大小 |
title_height | dimension | 标题栏高度 |
indicator_width | dimension | 指示器圆形按钮的宽度 |
indicator_height | dimension | 指示器圆形按钮的高度 |
indicator_margin | dimension | 指示器之间的间距 |
indicator_drawable_selected | reference | 指示器选中效果 |
indicator_drawable_unselected | reference | 指示器未选中效果 |
image_scale_type | enum | 和imageview的ScaleType做用同样 |
banner_default_image | reference | 当banner数据为空是显示的默认图片 |
banner_layout | reference | 自定义banner布局文件,可是必须保证id的名称同样(你能够将banner的布局文件复制出来进行修改) |
Gradle网络
或者引用本地libapp
!!!此步骤能够省略,直接在Activity或者Fragment中new Banner();框架
[历史版本资源地址]eclipse
问:eclipse怎么使用banner?
在历史版本列表中下载你想要版本的aar包提取最新资源/也能够本身把工程转成eclipse的
问:怎么显示的一片空白?
问:怎么加载其余图片资源(资源文件、文件、Uri、assets、raw、ContentProvider、sd卡资源)?
问:设置banner指示器颜色怎么变成方的了?
问:为何banner的点击事件没有反应,须要下一次轮播才行?