参考地址:

https://github.com/bingoogolapple/BGABanner-Android#%E6%95%88%E6%9E%9C%E5%9B%BE%E4%B8%8E%E7%A4%BA%E4%BE%8B-apk

BGABanner-Android

目录

  • 功能介绍
  • 效果图与示例 apk
  • 常见问题
  • 使用
  • 自定义属性说明
  • 关于我
  • 打赏支持
  • License

功能介绍

  • 引导界面导航效果
  • 支持根据服务端返回的数据动态设置广告条的总页数
  • 支持大于等于1页时的无限循环自动轮播、手指按下暂停轮播、抬起手指开始轮播
  • 支持自定义指示器位置和广告文案位置
  • 支持图片指示器和数字指示器
  • 支持 ViewPager 各种切换动画
  • 支持选中特定页面
  • 支持监听 item 点击事件
  • 加载网络数据时支持占位图设置,避免出现整个广告条空白的情况
  • 多个 ViewPager 跟随滚动

效果图与示例 apk

常见问题

  1. 结合 Fresco 加载图片请参考 FrescoDemoActivity
  2. 自定义 item 布局文件请参考 FrescoDemoActivity

使用

1.添加 Gradle 依赖

 bga-banner 后面的「latestVersion」指的是左边这个 Download 徽章后面的「数字」,请自行替换。

dependencies {implementation 'com.android.support:support-v4:latestVersion'implementation 'cn.bingoogolapple:bga-banner:latestVersion@aar'
}

2.在布局文件中添加 BGABanner

<cn.bingoogolapple.bgabanner.BGABannerandroid:id="@+id/banner_guide_content"style="@style/MatchMatch"app:banner_pageChangeDuration="1000"app:banner_pointAutoPlayAble="false"app:banner_pointContainerBackground="@android:color/transparent"app:banner_pointDrawable="@drawable/bga_banner_selector_point_hollow"app:banner_pointTopBottomMargin="15dp"app:banner_transitionEffect="alpha" />

3.在 Activity 或者 Fragment 中配置 BGABanner 的数据源

有多种配置数据源的方式,这里仅列出三种方式。更多初始化方式请查看 demo

配置数据源的方式1:通过传入数据模型并结合 Adapter 的方式配置数据源。这种方式主要用于加载网络图片,以及实现少于3页时的无限轮播

mContentBanner.setAdapter(new BGABanner.Adapter<ImageView, String>() {@Overridepublic void fillBannerItem(BGABanner banner, ImageView itemView, String model, int position) {Glide.with(MainActivity.this).load(model).placeholder(R.drawable.holder).error(R.drawable.holder).centerCrop().dontAnimate().into(itemView);}
});mContentBanner.setData(Arrays.asList("网络图片路径1", "网络图片路径2", "网络图片路径3"), Arrays.asList("提示文字1", "提示文字2", "提示文字3"));

配置数据源的方式2:通过直接传入视图集合的方式配置数据源,主要用于自定义引导页每个页面布局的情况

List<View> views = new ArrayList<>();
views.add(View.inflate(context, R.layout.layout_guide_one, null));
views.add(View.inflate(context, R.layout.layout_guide_two, null));
views.add(View.inflate(context, R.layout.layout_guide_three, null));
mContentBanner.setData(views);

配置数据源的方式3:通过传入图片资源 id 的方式配置数据源,主要用于引导页每一页都是只显示图片的情况

// Bitmap 的宽高在 maxWidth maxHeight 和 minWidth minHeight 之间
BGALocalImageSize localImageSize = new BGALocalImageSize(720, 1280, 320, 640);
// 设置数据源
mContentBanner.setData(localImageSize, ImageView.ScaleType.CENTER_CROP,R.drawable.uoko_guide_background_1,R.drawable.uoko_guide_background_2,R.drawable.uoko_guide_background_3);

4.监听广告 item 的单击事件,在 BGABanner 里已经帮开发者处理了防止重复点击事件

mContentBanner.setDelegate(new BGABanner.Delegate<ImageView, String>() {@Overridepublic void onBannerItemClick(BGABanner banner, ImageView itemView, String model, int position) {Toast.makeText(banner.getContext(), "点击了" + position, Toast.LENGTH_SHORT).show();}
});

5.设置「进入按钮」和「跳过按钮」控件资源 id 及其点击事件,如果进入按钮和跳过按钮有一个不存在的话就传 0,在 BGABanner 里已经帮开发者处理了防止重复点击事件,在 BGABanner 里已经帮开发者处理了「跳过按钮」和「进入按钮」的显示与隐藏

mContentBanner.setEnterSkipViewIdAndDelegate(R.id.btn_guide_enter, R.id.tv_guide_skip, new BGABanner.GuideDelegate() {@Overridepublic void onClickEnterOrSkip() {startActivity(new Intent(GuideActivity.this, MainActivity.class));finish();}
});

自定义属性说明

<declare-styleable name="BGABanner"><!-- 指示点容器背景 --><attr name="banner_pointContainerBackground" format="reference|color" /><!-- 指示点背景 --><attr name="banner_pointDrawable" format="reference" /><!-- 指示点容器左右内间距 --><attr name="banner_pointContainerLeftRightPadding" format="dimension" /><!-- 指示点上下外间距 --><attr name="banner_pointTopBottomMargin" format="dimension" /><!-- 指示点左右外间距 --><attr name="banner_pointLeftRightMargin" format="dimension" /><!-- 指示器的位置 --><attr name="banner_indicatorGravity"><flag name="top" value="0x30" /><flag name="bottom" value="0x50" /><flag name="left" value="0x03" /><flag name="right" value="0x05" /><flag name="center_horizontal" value="0x01" /></attr><!-- 是否开启自动轮播 --><attr name="banner_pointAutoPlayAble" format="boolean" /><!-- 自动轮播的时间间隔 --><attr name="banner_pointAutoPlayInterval" format="integer" /><!-- 页码切换过程的时间长度 --><attr name="banner_pageChangeDuration" format="integer" /><!-- 页面切换的动画效果 --><attr name="banner_transitionEffect" format="enum"><enum name="defaultEffect" value="0" /><enum name="alpha" value="1" /><enum name="rotate" value="2" /><enum name="cube" value="3" /><enum name="flip" value="4" /><enum name="accordion" value="5" /><enum name="zoomFade" value="6" /><enum name="fade" value="7" /><enum name="zoomCenter" value="8" /><enum name="zoomStack" value="9" /><enum name="stack" value="10" /><enum name="depth" value="11" /><enum name="zoom" value="12" /></attr><!-- 提示文案的文字颜色 --><attr name="banner_tipTextColor" format="reference|color" /><!-- 提示文案的文字大小 --><attr name="banner_tipTextSize" format="dimension" /><!-- 加载网络数据时覆盖在 BGABanner 最上层的占位图 --><attr name="banner_placeholderDrawable" format="reference" /><!-- 是否是数字指示器 --><attr name="banner_isNumberIndicator" format="boolean" /><!-- 数字指示器文字颜色 --><attr name="banner_numberIndicatorTextColor" format="reference|color" /><!-- 数字指示器文字大小 --><attr name="banner_numberIndicatorTextSize" format="dimension" /><!-- 数字指示器背景 --><attr name="banner_numberIndicatorBackground" format="reference" /><!-- 当只有一页数据时是否显示指示器,默认值为 false --><attr name="banner_isNeedShowIndicatorOnOnlyOnePage" format="boolean" /><!-- 自动轮播区域距离 BGABanner 底部的距离,用于使指示器区域与自动轮播区域不重叠 --><attr name="banner_contentBottomMargin" format="dimension"/><!-- 宽高比例,如果大于 0,则会根据宽度来计算高度,否则使用 android:layout_height 指定的高度 --><attr name="banner_aspectRatio" format="float"/><!-- 占位图和资源图片缩放模式 --><attr name="android:scaleType"/>
</declare-styleable>

代码是最好的老师,更多详细用法请查看 demo

作者的地址:http://www.bingoogolapple.cn/#/Blog/BlogList

引导界面滑动导航 + 大于等于1页时无限轮播 + 各种切换动画轮播效果相关推荐

  1. Android ViewPager和Fragment实现顶部导航界面滑动效果

    在项目中,我们常常需要实现界面滑动切换的效果.例如,微信界面的左右滑动切换效果.那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果. 一. ViewPager 官 ...

  2. Android 应用开发----7. ViewPager+Fragment一步步打造顶部导航界面滑动效果

    ViewPager+Fragment一步步打造顶部导航界面滑动效果 在许多应用中,我们常常用到这么一个效果: 可以看到,由于现在的应用数据经常需要涉及到多个模块,所以常常需要使用滑动标签在多个页面之间 ...

  3. [电脑问题解决]在windows 8.1升级后,电脑重启时不显示ubuntu的系统引导界面,而总是直接进入windows

    问题:在windows 8.1升级后,电脑重启时不显示ubuntu的系统引导界面,而总是直接进入windows 解决方法:以管理员身份运行命令行终端,输入操作 bcdedit /set {bootmg ...

  4. 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8980917 做Android开发加起来差不多也有一年多的时间了,总是想写点自 ...

  5. android中界面滑动延伸,android中ViewPager详解--视图滑动、界面卡等效果 (三)

    GuideActivity.java引导界面: import java.util.ArrayList; import java.util.List; import android.app.Activi ...

  6. 5分钟搞定开机引导界面

    作者: 夏至,欢迎转载,也请保留这段申明,谢谢. www.jianshu.com/p/dfc188f13- 今天讲一个比较简单的东西,那就是每一个app在第一次启动的时候,都会出现的引导界面:刚开始的 ...

  7. ViewPager实现引导界面以及进入下一个activity解决办法

    这次项目中实现了用户引导滑动图片,到最后一张图片的时候,我认为理想的是同时具备以下两点: 1)用户可以点击上面的"开始使用"这样的按钮可以进入主界面: 2)用户接着滑动下一个图片的 ...

  8. Axure制作手机UI原型之界面滑动滚动效果

    用Axure制作手机界面原型的时候,往往会遇到像Android中listview那种页面,手指在界面上滑动,页面也就跟随滚动,拖拽到底部或者顶部的时候还有个回弹效果,如何在Axure之中模拟这种滚动呢 ...

  9. Android 引导界面制作

    2019独角兽企业重金招聘Python工程师标准>>> 项目做完了,做了第一次启动,滑动的引导页了. 然后需求又要改成流行的图层图片引导了.如图: 大家一定也经常见吧,实现当然很简单 ...

最新文章

  1. OPatch cannot find a valid oraInst.loc file to locate Central Inventory
  2. 19.12 添加自定义监控项目;19.13,19.14 配置邮件告警(上下);19.15 测试告警19.16...
  3. 使用模板库的几个注意点
  4. Hazelcast入门指南第3部分
  5. oracle数据库查看归档路径,centos7下查oracle归档及物理文件路径
  6. DCGAN:生成动漫头像
  7. 【nodejs原理源码赏析(3)】欣赏手术级的原型链加工艺术
  8. html绘制静态图表,怎样用JavaScript和HTML5 Canvas绘制图表
  9. 2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
  10. mysql text字段导出_用命令创建MySQL数据库
  11. 归并排序的时间复杂度
  12. 二倍图三倍图什么意思_小程序有二倍图三倍图使用的必要吗?
  13. 编程求球的体积和表面积(c语言)
  14. 【NLP】Representation Learning for Natural Language Processing
  15. 辉芒微FT61F023,FT61F011A
  16. html中文网app,app.vue什么作用?
  17. 股票量化策略是如何被执行出来的?
  18. cocos creator移动事件和 opacity
  19. .设计一个Student类,该类中包括学生的姓名和成绩。创建Student类的5个对象,如下所示: 姓名 成绩 刘德华 85 张学友 100 刘杰 65 章子怡 58 周迅 76 将以上5个对象
  20. stm32f429基于ymodem传输的bootloader

热门文章

  1. Python Mysql学习总结
  2. 在vs 2008中使用iis来调试,或者说在iis中集成vs 2008的调试
  3. [ASP.NET MVC]让Html.RenderAction支持Lamda表达式
  4. 关于 JQuery 的克隆
  5. Javascript 判断 object 的特定类
  6. 员工出错处罚通知_员工被罚款50元!理由是用了单位公厕的厕纸…
  7. 没有主清单属性_梦幻西游电脑版:神威组第一大唐?大佬两天更新200W硬件,这身属性难被超越!太狠了...
  8. 黑龙江省2021高考成绩排名查询,黑龙江高考排名对应学校-高考位次对应大学(2021年理科参考)...
  9. linux 使用ssr客户端_webpack5.0+SSR尝鲜【排坑记录】
  10. python怎么换行继续写脚本_python怎么换行继续写脚本