Android 轮播图Banner切换图片的效果

时间:2021-08-16 06:59:28

Android XBanner使用详解

2018年03月14日 08:19:59 AND_Devil 阅读数:910
 
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://www.cnblogs.com/huang*/p/9961371.html

前言:现如今的很多APP都介入了广告,不过,大多数都是以轮播图的形式展现的,我之前使用的是viewpage和自定义控件实现的这些功能,不过,相比于banner来说,效果还显示很逊色的,毕竟,现在的手机,性能都过剩,这些消耗,也不会太影响APP的性能!

之前接入的是Banner,现在突然间很想使用banner的升级版,我借鉴了XBanner的github介绍

一、XBanner简介

支持图片无限轮播的控件,可进行自定义功能。

  1. 支持根据服务端返回的数据动态设置广告条的总页数
  2. 支持大于等于1页时的无限循环自动轮播、手指按下暂停轮播、抬起手指开始轮播
  3. 支持自定义状态指示点位置 左 、中 、右
  4. 支持自定义状态指示点
  5. 支持监听 item 点击事件
  6. 支持设置图片轮播间隔
  7. 支持指示器背景的修改及隐藏/显示
  8. 支持显示提示性文字功能
  9. 支持图片切换动画,目前支持10种切换动画,具体可看demo
  10. 支持设置图片切换速度
  11. 支持设置数字指示器
  12. 支持Glide/Fresco等主流图片加载框架加载图片 
    效果图 
    Android 轮播图Banner切换图片的效果

基本使用

1.添加Gradle依赖

dependencies {
compile 'com.xhb:xbanner:1.3.1'
}

2.在清单文件中添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

3 由于XBanner中有可能从网络加载图片,因此也需要导入一些图片加载框架的依赖,如Glide

       `compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'jp.wasabeef:glide-transformations:1.0.6'`

4 在布局文件中添加XBanner

<com.stx.xhb.xbanner.XBanner
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/banner_1"
android:layout_width="match_parent"
android:layout_height="180dp"
app:AutoPlayTime="3000"
app:pointsContainerBackground="#44aaaaaa"
app:pointNormal="@drawable/shape_noraml"
app:pointSelect="@drawable/shape_selected"
app:pointsPosition="RIGHT"
app:tipTextSize="12sp"
app:isShowNumberIndicator="true"
app:isShowIndicatorOnlyOne="true"
app:pageChangeDuration="800"/>

5 XBanner属性


属性名 属性说明 属性值
isAutoPlay 是否支持自动轮播 boolean类型,默认为true
autoPlayTime 图片轮播事件间隔 int类型,默认5000ms
pointNormal 指示器未选中时的状态 drawable类型,不指定的话使用默认状态点
pointSelect 指示器选中时的状态 drawable类型,不指定的话使用默认状态点
pointsVisible 是否显示指示器 boolean类型,默认为true
pointsPosition 指示点位置 CENTER、LEFT、RIGHT,默认CENTER
pointsContainerBackground 指示器条背景 color类型、drawable类型、mipmap类型等
pointContainerPosition 指示器条位置 TOP、BOTTOM,默认BOTTOM
pointContainerLeftRightPadding 指示点容器左右内间距 dimension类型,默认10.0dip
pointTopBottomPadding 指示点上下内间距 dimension类型,默认6.0dip
pointLeftRightPadding 指示点左右内间距 dimension类型,默认3.0dip
tipTextColor 提示文字的颜色 reference类型
tipTextSize 提示文字的大小 dimension类型,默认10.0dp

6.在Activity或者Fragment中配置

banner = (XBanner) findViewById(R.id.banner);

 List<String> imgesUrl = new ArrayList<>();
imgesUrl.add("http://img3.fengniao.com/forum/attachpics/913/114/36502745.jpg");
imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/99381473502384338.jpg");
imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/77991473496077677.jpg");
imgesUrl.add("http://imageprocess.yitos.net/images/public/20160906/1291473163104906.jpg");
// 为XBanner绑定数据
banner .setData(imgesUrl,null);//第二个参数为提示文字资源集合
// XBanner适配数据
banner.setmAdapter(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, View view, int position) {
Glide.with(MainActivity.this).load(imgesUrl.get(position)).into((ImageView) view);
}
});
// 设置XBanner的页面切换特效,选择一个即可,总的大概就这么多效果啦,欢迎使用
banner.setPageTransformer(Transformer.Default);//横向移动 banner.setPageTransformer(Transformer.Alpha); //渐变,效果不明显 banner.setPageTransformer(Transformer.Rotate); //单页旋转 banner.setPageTransformer(Transformer.Cube); //立体旋转 banner.setPageTransformer(Transformer.Flip); // 反转效果 banner.setPageTransformer(Transformer.Accordion); //三角换页 banner.setPageTransformer(Transformer.ZoomFade); // 缩小本页,同时放大另一页 banner.setPageTransformer(Transformer.ZoomCenter); //本页缩小一点,另一页就放大 banner.setPageTransformer(Transformer.ZoomStack); // 本页和下页同事缩小和放大 banner.setPageTransformer(Transformer.Stack); //本页和下页同时左移 banner.setPageTransformer(Transformer.Depth); //本页左移,下页从后面出来 banner.setPageTransformer(Transformer.Zoom); //本页刚左移,下页就在后面
// 设置XBanner页面切换的时间,即动画时长
banner.setPageChangeDuration(1000);

7 监听广告 item 的单击事件

banner.setOnItemClickListener(new XBanner.OnItemClickListener() {
@Override
public void onItemClick(XBanner banner, int position) {
Toast.makeText(MainActivity.this, "点击了第"+position+"图片", Toast.LENGTH_SHORT).show();
}
});

8 为了更好的体验,建议j在添加以下代码

/** 为了更好的体验效果建议在下面两个生命周期中调用下面的方法 **/
@Override
protected void onResume() {
super.onResume();
banner.startAutoPlay();
} @Override
protected void onStop() {
super.onStop();
banner.stopAutoPlay();
}

9 混淆配置

##XBanner 图片轮播混淆配置
-keep class com.stx.xhb.xbanner.**{*;}

Android 轮播图Banner切换图片的效果的更多相关文章

  1. Android轮播图Banner的实现

    从慕课网上学了一门叫做“不一样的自定义实现轮播图效果”的课程,感觉实用性较强,而且循序渐进,很适合初学者.在此对该课程做一个小小的笔记. 实现轮播思路: 1.一般轮播图是由一组图片和底部轮播圆点组成, ...

  2. android 使用图片轮播图---banner 使用

    转自:https://github.com/youth5201314/banner 使用步骤 Step 1.依赖banner Gradle dependencies{ compile 'com.you ...

  3. 029 Android 轮播图广告Banner开源框架使用

    1.Banner介绍 现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能. 2.使用环境配置(具体可见github开源项目) (1)添加依赖 在build.gradl ...

  4. android 轮播图

    轮播图是很常用的一个效果 核心功能已经实现 没有什么特殊需求 自己没事研究的 所以封装的不太好 一些地方还比较糙 为想要研究轮播图的同学提供个参考 目前测试图片为mipmap中的图片 没有写从网络加载 ...

  5. Android轮播图

    轮播图是很常用的一个效果 核心功能已经实现 没有什么特殊需求 自己没事研究的 所以封装的不太好 一些地方还比较糙 为想要研究轮播图的同学提供个参考目前测试图片为mipmap中的图片 没有写从网络加载图 ...

  6. 微信小程序之swiper轮播图中的图片自适应高度

    小程序中的轮播图很简单,官方都有例子的,但是唯一的缺陷就是swiper是固定死的150px高度,这样如果传入的图片大于这个高度就会被隐藏.辣么,怎样让图片自适应不同分辨率捏. 我的思路是:获取屏幕宽度 ...

  7. android轮播图的实现原理

    1.轮播图的点:RadioGroup,根据网络请求的数据,解析得到的图片的个数,设置RadioGroup的RadioButton的个数. 2.轮播图的核心技术:用Gallery来存放图片,设置适配器. ...

  8. &lbrack;android&rsqb; 轮播图-滑动图片标题焦点

    谷歌提供的v4包,ViewPager 在布局文件中,先添加<android.support.v4.view.ViewPager/>控件,这个只是轮播的区域 在布局文件中,布置标题描述部分 ...

  9. jquery 焦点轮播图控制每张图片停留不同时间

    轮播代码是代签博客园一位前辈写的代码,这里作了点小修改,实现了每张图片停留不同时间 *{ padding:0px; border:0px; margin:0px; } ul { list-style: ...

随机推荐

  1. &lbrack;原创&rsqb;cocos2d-x研习录-第三阶 多分辨率适配器

    在移动终端(智能手机)平台下开发游戏一般都会涉及到屏幕多分辨率适配问题,原因是手机款式多种多样,不同的款式存在有不同的尺寸,即使尺寸相同又可能存在不同的分辨率. 手机屏幕尺寸:指手机屏幕对角线长度. ...

  2. CLR&sol;&period;NET&sol;C&num;&sol;Visual Studio&sol;ASP&period;NET各版本之间的关系(转)

    由于这篇文章记录的是2015年7月,那时.net core还是叫做.net core 5 名词定义 下列这些名词,写.NET 的人一定都不陌生,但你是否有真正理解呢?如果看了我的摘要文字说明还无法理解 ...

  3. 阿里云主机安装Memcached

    http://www.zyuns.com/?page_id=354 前言最近发现阿里云主机在使用中,并发访问量稍大,页面加载速度就很慢.于是学习了一些服务器优化的文章,决定安装Memcached,优化 ...

  4. CF 19D Points 【线段树&plus;平衡树】

    在平面上进行三种操作: 1.add x y:在平面上添加一个点(x,y) 2.remove x y:将平面上的点(x,y)删除 3.find x y:在平面上寻找一个点,使这个点的横坐标大于x,纵坐标 ...

  5. 做一个项目前搭建一个tabBar&lpar;一&rpar;框架

    前言 通常做一个项目前,不算开始讨论需求,分析产品等等,一开始会给我们搭建一个框架,今天简单说一下搭建框架. github网址:https://github.com/Moonths/iWatch.gi ...

  6. javascript 特殊的面向对象以及继承详解&lpar;入门篇&rpar;

    学习Javascript人,大多听说一句话叫js里面一切都是对象.我刚开始接触javascript面向对象编程时候,挺乱的,我当时习惯性的把PHP的面像对象思想套用在js上面,其实js的面向对象与传统 ...

  7. TCP&sol;IP 详解常用术语

    业务需要,最近看TCP/IP 这本书,专业名词太多了,总结一下,给后来着参考,直接使用. 后续会在读书时慢慢添加. ACK:(ACKnowledgment)TCP首部中的确认标志. ARP:地址解析协 ...

  8. 【转】getopt模块,实现获取命令行参数

    python中 getopt 模块,该模块是专门用来处理命令行参数的 函数getopt(args, shortopts, longopts = []) 参数args一般是sys.argv[1:],sh ...

  9. GSM与GPRS的区别

    1.    GSM是全球移动通讯系统(Global System for Mobile Communications)的简称 2.    GPRS是通用分组无线业务(General Packet Ra ...

  10. ExpressMapper- The New &period;NET Mapper&excl;

    推荐,据测试比手工映射的效率还高. https://www.codeproject.com/Tips/1009198/Expressmapper-The-New-NET-Mapper