Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式、动画、轮播和切换时间、位置、图片加载框架等!

原文地址:https://github.com/youth5201314/banner

常量

常量名称 描述 所属方法
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

动画常量类(setBannerAnimation方法调用)

常量类名
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属性(banner布局文件中调用)

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作用一样

使用步骤

Step 1.依赖banner

Gradle

dependencies{compile 'com.youth.banner:banner:1.4.9'
}

或者引用本地lib

compile project(':banner')

Step 2.添加权限到你的 AndroidManifest.xml

<!-- if you want to load images from the internet -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- if you want to load images from a file OR from the internet --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Step 3.在布局文件中添加Banner,可以设置自定义属性

!!!此步骤可以省略,直接在Activity或者Fragment中new Banner();

<com.youth.banner.Bannerxmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="高度自己设置" />

Step 4.重写图片加载器

public class GlideImageLoader extends ImageLoader {@Override public void displayImage(Context context, Object path, ImageView imageView) { /**  注意:  1.图片加载器由自己选择,这里不限制,只是提供几种使用方法  2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器,  传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行,  切记不要胡乱强转!  */ eg: //Glide 加载图片简单用法 Glide.with(context).load(path).into(imageView);//注:使用Glide方法加载图片需要先导入依赖包 compile 'com.github.bumptech.glide:glide:4.0.0'
 //Picasso 加载图片简单用法 Picasso.with(context).load(path).into(imageView); 

 //用fresco加载图片简单用法,记得要写下面的createImageView方法 Uri uri = Uri.parse((String) path); imageView.setImageURI(uri); } //提供createImageView 方法,如果不用可以不重写这个方法,主要是方便自定义ImageView的创建 @Override public ImageView createImageView(Context context) { //使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context); return simpleDraweeView; } }

Step 5.在Activity或者Fragment中配置Banner

--------------------------简单使用-------------------------------
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Banner banner = (Banner) findViewById(R.id.banner); //设置图片加载器 banner.setImageLoader(new GlideImageLoader()); //设置图片集合 banner.setImages(images); //banner设置方法全部调用完毕时最后调用 banner.start(); } --------------------------详细使用------------------------------- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Banner banner = (Banner) findViewById(R.id.banner); //设置banner样式 banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE); //设置图片加载器 banner.setImageLoader(new GlideImageLoader()); //设置图片集合 banner.setImages(images); //设置banner动画效果 banner.setBannerAnimation(Transformer.DepthPage); //设置标题集合(当banner样式有显示title时) banner.setBannerTitles(titles); //设置自动轮播,默认为true banner.isAutoPlay(true); //设置轮播时间 banner.setDelayTime(1500); //设置指示器位置(当banner模式中有指示器时) banner.setIndicatorGravity(BannerConfig.CENTER); //banner设置方法全部调用完毕时最后调用 banner.start(); } -----------------当然如果你想偷下懒也可以这么用-------------------- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Banner banner = (Banner) findViewById(R.id.banner); banner.setImages(images).setImageLoader(new GlideImageLoader()).start(); }

Step 6.(可选)增加体验

//如果你需要考虑更好的体验,可以这么操作
@Override
protected void onStart() {super.onStart(); //开始轮播 banner.startAutoPlay(); } @Override protected void onStop() { super.onStop(); //结束轮播 banner.stopAutoPlay(); }

  • 问:怎么加载其他图片资源(资源文件、文件、Uri、assets、raw、ContentProvider、sd卡资源)?

    • 答:列如!如果你使用的是glide,那么可以如下操作,其他图片图片加载框架可能有不同

      //资源文件
      Integer[] images={R.mipmap.a,R.mipmap.b,R.mipmap.c};
      //Uri
      Uri uri = resourceIdToUri(context, R.mipmap.ic_launcher);
      Uri[] images={uri};
      //文件对象
      File[] images={"文件对象","文件对象"};
      //raw 两种方式
      String[] images={"Android.resource://com.frank.glide/raw/raw_1"};
      String[] images={"android.resource://com.frank.glide/raw/"+R.raw.raw_1"};
      //ContentProvider
      String[] images={"content://media/external/images/media/139469"};
      //assets
      String[] images={"file:///android_asset/f003.gif"};
      //sd卡资源
      String[] images={"file://"+ Environment.getExternalStorageDirectory().getPath()+"/test.jpg"};banner.setImages(images);//这里接收集合,上面写成集合太占地方,这个大家举一反三就行了啊

转载于:https://www.cnblogs.com/XYLong/p/7405787.html

Android图片轮播控件相关推荐

  1. Android图片轮播控件ConvenientBanner的简单使用

    1.添加依赖 compile 'com.bigkoo:convenientbanner:2.0.5' 2.在布局文件中添加 <com.bigkoo.convenientbanner.Conven ...

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

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

  3. android banner加载布局,Android知识点之图片轮播控件Banner

    Rate this post 在我们来发Android项目时,经常有图片或者广告的轮播功能的需求,下面将介绍一款Android开发时使用的开源图片轮播控件Banner,同时按序讲解如何使用配置这款控件 ...

  4. android横幅轮播,横幅广告图片轮播控件 – bannerview

    BannerView 横幅广告图片轮播控件 Gradle repositories { maven { url "https://jitpack.io" } } dependenc ...

  5. 图片轮播控件 jQuery bxslider

    最近,看到有好多人问图片轮播怎么写,这个东西完全不必自己写,虽然当初我刚开始学习html的时候出于兴趣写过一个,但是现在想想并没有什么卵用:在此,总结一个比较好用的图片轮播插件,jQuery的bxsl ...

  6. 广告栏(自动轮播,无限循环)-图片轮播控件Banner的简单使用总结

    Gradle dependencies{compile 'com.youth.banner:banner:1.1.5' //指定版本compile 'com.youth.banner:banner:+ ...

  7. (4.2.44.3)横幅广告图片轮播控件

    参考文献 gitHub-Banner-java bannerview Android-ConvenientBanner

  8. android 3d布局轮播,android 图片/视频混合轮播控件banner

    android 图片/视频混合轮播控件banner 在youth5201314的图片轮播控件做的修改 原作者github地址:https://github.com/youth5201314/banne ...

  9. android banner 广告,Android convinientbanner顶部广告轮播控件使用详解

    本文实例为大家分享了convinientbanner顶部广告轮播控件的具体代码,供大家参考,具体内容如下 gradle中添加 compile 'com.bigkoo:convenientbanner: ...

  10. c# imager让图片有圆角unity_Qt编写自定义控件24-图片轮播控件

    一.前言 上一篇文章写的广告轮播控件,采用的传统widget堆积设置样式表做的,这次必须要用到更高级的QPainter来绘制了,这个才是最高效的办法,本控件参考雨田哥的轮播控件,经过大规模的改造而成, ...

最新文章

  1. 微服务架构与Spring Cloud Alibaba
  2. VTK:vtkCamera用法实战
  3. C语言通过链表指针删除链表节点的算法(附完整源码)
  4. 谈一下我们是怎么做数据库单元测试(Database Unit Test)的
  5. 土方工程量计算表格excel_工程造价算量表+工程量软件,超多表格可套用,高清下载...
  6. mysql导入库指令_mysql数据库指令导入导出
  7. Spring Boot + JPA +MySQL 数据操作及示例环境搭建(手动建表建类)
  8. 我的世界服务器开服文件夹,详细开服教程。想要自己开服的小伙伴儿 戳这里·...
  9. 公众号获取token失败_恶意请求微信公众号token,导致access_token超过10万次解决思路...
  10. MQTT的学习研究(十)【转】mosquitto——一个开源的mqtt代理
  11. Vivado初次使用教程
  12. python中idle什么意思_始学Python:IDLE环境介绍
  13. 模仿微信图片编辑器--动画实现向上弹出文字编辑框(遮罩)界面
  14. 这一周CSDN人都看了些什么?(5.14-5.20)
  15. 2020手机CPU性能天梯图
  16. 和数传媒专访天王链创始人梁震宇先生
  17. 【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化
  18. python实现-用随机森林填补缺失值、均值填充0填充的比较
  19. 无法给变量添加属性导致出问题
  20. 网络优化(三)——参数初始化

热门文章

  1. mysql backup 使用_MYSQLBACKUP工具的使用
  2. 自学英语最有效的方法
  3. 2020年十七届华为杯数学建模比赛记录
  4. SFP光模块的多模和单模区别
  5. bitcoin-NG的分析
  6. Python练习实战股票网页数据
  7. 鉴源丨车载ECU嵌入式设备的诊断测试 - 会话和安全控制
  8. 《Linux命令行与shell脚本编程大全(第3版)》读书笔记
  9. matlab屏保弹球,连续时间下的弹球建模
  10. 更新谷歌浏览器最新版后 Access to XMLHttpRequest at 跨域问题解决方法