AndroidImageSlider实现炫酷轮播广告效果

发布时间 - 2026-01-11 03:02:16    点击率:

本文实例为大家分享了AndroidImageSlider实现炫酷轮播广告的具体代码,供大家参考,具体内容如下

本文为菜鸟窝作者刘婷的连载。”商城项目实战”系列来聊聊仿”京东淘宝的购物商城”如何实现。

AndroidImageSlider 是一个神奇而且方便的 Android 图片滚动框架,在菜鸟商城项目中我们就要使用这个框架来实现炫酷的轮播广告。

AndroidImageSlider 架构分析

首先我们看图说话,下面是 AndroidImageSlider 的架构分析图。

该架构分析图中的 SliderLayout 是一个继承于 RelativeLayout 的自定义View,也是该框架的核心。它由 SliderView 和 PagerIndicator 组成。而 SliderView 分为了 DefaultSliderView 和 TextSliderView 两部分,其中 DefaultSliderView 是只支持图片加载滚动,而 TextSliderView 不仅支持图片还支持文本的显示。Transition effects 和Animation 主要是动画效果的控制,另外还有两个重要的监听事件分别为 onSliderClickListener 和 onPageChangeListener,顾名思义,一个是点击事件监听,另一个是页面切换事件监听。

基本使用

已经了解了框架的基本构造,下面就是要看如何使用了,使用的方法也很简单。

1. Gradle 依赖配置

我们这里使用的是 android Studio 2.2.3 开发工具,Eclipse 引用第三方库的具体方法可以参考AndroidImageSlider 源码说明。在 build.gradle 文件中集成第三方库的依赖。

xml
dependencies {
 compile 'com.daimajia.slider:library:1.1.5@aar'
 compile 'com.squareup.picasso:picasso:2.5.2'
 compile 'com.nineoldandroids:library:2.4.0'
 compile 'com.android.support:support-v4:25.2.0'}

2. 添加权限

使用该框架还需要添加相应的权限,分别为网络权限和读文件的权限。

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

3. 添加到布局 Layout 中

将 SliderLayout 添加到相应的布局文件 Layout 中。

xml
<com.daimajia.slider.library.SliderLayout
 android:id="@+id/home_slider_ad"
 android:layout_width="match_parent"
 android:layout_height="@dimen/large_height"></com.daimajia.slider.library.SliderLayout>

如果需要自定义的 PagerIndicator 的话,可以自定义,当然也可以使用该框架自带的,这里是自定义 PagerIndicator 的源码。

xml
<com.daimajia.slider.library.Indicators.PagerIndicator
  android:id="@+id/home_indicator_ad"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="center"
  custom:selected_color="#0095BF"
  custom:unselected_color="#55333333"
  custom:selected_drawable="@drawable/bird"
  custom:shape="oval"
  custom:selected_padding_left="5dp"
  custom:selected_padding_right="5dp"
  custom:unselected_padding_left="5dp"
  custom:unselected_padding_right="5dp"
  android:layout_centerHorizontal="true"
  android:layout_alignParentBottom="true"
  custom:selected_width="6dp"
  custom:selected_height="6dp"
  custom:unselected_width="6dp"
  custom:unselected_height="6dp"
  android:layout_marginBottom="20dp">
 </com.daimajia.slider.library.Indicators.PagerIndicator>

4. 在 Activity/Fragment 中定义以及配置 SliderLayout

首先就是要获取到 SliderLayout 控件以及自定义的 Indicator。

xml
mSlider = (SliderLayout) view.findViewById(R.id.home_slider_ad);
indicator =(PagerIndicator)view.findViewById(R.id.home_indicator_ad);

然后就是准备好测试的数据,我在这里定义了一个实体类 BannerInfo,包括了图片 imgUrl 和描述内容 name。定义好实体类后就开始设置相应的测试数据并且添加到滚动图片列表 listBanner 中。

xml
private void getBannerData() {
 BannerInfo bannerInfo_01 = new BannerInfo();
 bannerInfo_01.setName("音箱狂欢");
 bannerInfo_01.setImgUrl("http://7mno4h.com2.z0.glb.qiniucdn.com/5608f3b5Nc8d90151.jpg");
 BannerInfo bannerInfo_02 = new BannerInfo();
 bannerInfo_02.setName("手机国庆礼");
 bannerInfo_02.setImgUrl("http://7mno4h.com2.z0.glb.qiniucdn.com/5608eb8cN9b9a0a39.jpg");
 BannerInfo bannerInfo_03 = new BannerInfo();
 bannerInfo_03.setName("IT生活");
 bannerInfo_03.setImgUrl("http://7mno4h.com2.z0.glb.qiniucdn.com/5608cae6Nbb1a39f9.jpg");
 listBanner.add(bannerInfo_01);
 listBanner.add(bannerInfo_02);
 listBanner.add(bannerInfo_03);
 }

接下来就是要配置 SliderLayout 的相关属性了,添加自定义的 Indicator,设置动画效果,添加图片列表数据以及设置监听事件

xml
private void initSlider() {
 if (listBanner != null) {
  for (BannerInfo bannerInfo : listBanner) {
  TextSliderView textSliderView = new TextSliderView(this.getActivity());
  textSliderView.image(bannerInfo.getImgUrl())
   .description(bannerInfo.getName())
   .setScaleType(BaseSliderView.ScaleType.CenterCrop)
   .setOnSliderClickListener(this);
  mSlider.addSlider(textSliderView);
  }
 }

 mSlider.setCustomIndicator(indicator);
 mSlider.setCustomAnimation(new DescriptionAnimation());
 mSlider.setPresetTransformer(SliderLayout.Transformer.RotateUp);
 mSlider.setDuration(3000);
 mSlider.addOnPageChangeListener(this);
 }

5. 在onStop() 中停止 SliderLayout 滚动

在 Activity/Fragment 生命周期结束前,需要先停止图片的滚动,防止出现内存溢出等问题。


xml
@Override
 public void onStop() {
 // To prevent a memory leak on rotation, make sure to call stopAutoCycle() on the slider before activity or fragment is destroyed
 mSlider.stopAutoCycle();
 super.onStop();
 }

最终效果

运行代码,效果图如下。

AndroidImageSlider 的更多使用方法和功能介绍请参考AndroidImageSlider 源码说明。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# AndroidImageSlider  # 轮播广告  # android实现banner轮播图无限轮播效果  # Android viewpager自动轮播和小圆点联动效果  # Android viewpager无限轮播获取网络图片功能  # Android ViewPager实现无限循环轮播广告位Banner效果  # Android自定义控件实现优雅的广告轮播图  # Android使用ViewPager加载图片和轮播视频  # Android ViewPager实现轮播图效果  # Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigur  # Android实现ViewPage轮播图效果  # 详解android 视频图片混合轮播实现  # 自定义  # 是一个  # 菜鸟  # 分别为  # 第三方  # 的是  # 也很  # 要看  # 实体类  # 还需要  # 可以使用  # 顾名思义  # 自带  # 淘宝  # 大家分享  # 来实现  # 我在这里  # 两部分  # 使用这个  # 图中 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  如何在建站主机中优化服务器配置?  Laravel如何使用.env文件管理环境变量?(最佳实践)  iOS中将个别页面强制横屏其他页面竖屏  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何快速生成ASP一键建站模板并优化安全性?  WEB开发之注册页面验证码倒计时代码的实现  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel Docker环境搭建教程_Laravel Sail使用指南  北京的网站制作公司有哪些,哪个视频网站最好?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么实现模型属性的自动加密  使用豆包 AI 辅助进行简单网页 HTML 结构设计  如何在服务器上三步完成建站并提升流量?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Java遍历集合的三种方式  装修招标网站设计制作流程,装修招标流程?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  linux写shell需要注意的问题(必看)  使用Dockerfile构建java web环境  Laravel如何使用Eloquent进行子查询  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  智能起名网站制作软件有哪些,制作logo的软件?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  制作企业网站建设方案,怎样建设一个公司网站?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel如何实现用户密码重置功能?(完整流程代码)  郑州企业网站制作公司,郑州招聘网站有哪些?  Android自定义listview布局实现上拉加载下拉刷新功能  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  米侠浏览器网页背景异常怎么办 米侠显示修复  LinuxCD持续部署教程_自动发布与回滚机制  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Python文本处理实践_日志清洗解析【指导】  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  android nfc常用标签读取总结  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  javascript日期怎么处理_如何格式化输出  长沙做网站要多少钱,长沙国安网络怎么样?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑