java中广告维护轮播图怎么做_Banner广告轮播图

需求描述

轮播图也是大部分app都有的效果,商品类跟新闻类的app是肯定会有的。

轮播图的效果跟第一次启动时的引导页类似,不过轮播图在引导页的基础上多了几个功能:在第一页也能向左滑动,在最后一页也能向右滑动

有个计时器,每隔一段时间滚动轮播图

先看效果图

代码实现

activity_main.xml

最外层是RelativeLayout,固定高度200dp,里面有ViewPager跟LinearLayout,ViewPager用来显示banner图片,LinearLayout显示点点点图片,表示当前ViewPager的选中状态。

BannerAdapter.java ViewPager适配器,继承自PagerAdapter,重写四个方法。

首先我们把要显示的图片的资源id放到一个名字为banners的int数组中,这是一个实例变量,在构造方法中传入context对象。getCount 返回int的最大值,这样有个好处就是当你滑动到来最后一页还能往后滑动。

isViewFromObject 常规写法 参数1==参数2

destroyItem 删除一条记录

instantiateItem 添加一条记录,首先传入的position的值是0到int最大值,因为我们前面的getCount方法就返回int类型最大值,所以这里我们要对图片数量进行求余,这样求余之后position的值必定小于图片数量,初始化ImageView对象,设置图片缩放类型,把position通过setTag保存到view里面,设置图片资源,给图片设置点击事件,最后把图片添加到ViewGroup里面。这个ViewGroup就是ViewPager自己,如果你看了源码,ViewPager就是继承自ViewGroup的。

onClickListener 先判断onBannerClickListener是否为空,如果不为空,调用onBannerClickListener的onClick方法。

setOnBannerClickListener 设置banner item点击监听,其实就是设置图片点击。

getBanners 返回图片资源数组。

MainActivity.java

onCreate 查找ViewPager控件,初始化BannerAdapter对象,给bannerAdapter设置点击事件(图片点击),给ViewPager设置缓存页数,设置适配器,添加页面改变监听,查找ViewGroup,循环添加显示点点点图片的ImageView,在for循环中创建ImageView对象,设置图片宽高,给图片设置资源图片,选中跟未选中资源图片不一样,默认第一个点选中。最后调用viewGroup.addView方法把图片添加进去,这个方法有第二个参数,可以设置左右外边距。通过ViewPager.setCurrentItem方法设置当前页,当前页的值给一个比较大默认值,这样做的好处就是软件刚打开Banner也能向左边滑动,最后开启计时器,这里调用postDelayed方法,这个方法可以延迟执行Runnable,它有两个参数,第一个参数是Runnable,第二个参数是延迟的时间,我们延迟5秒执行。Handler+Runnable当计时器使用大家应该都明白了把,毕竟我们前面的音乐播放器,视频播放器都这么用过。

onPageChangeListener 在onPageSelected方法中把当前的position赋值给currentItem,调用setImageBackground方法改变点点点图片的选中状态,传入了一个int类型的值,我们先对position求余之后再传入进去。

setImageBackground 改变点点点图片的选中状态,循环图片数量,根据下标从viewGroup中找出ImageView,先把背景设置成无,如果选中显示选中图片,未选中设置未选中图片。

onBannerClickListener 图片点击监听,在这里可以处理图片点击之后做的事情

onDestroy 删除计时器,大家在开发中如果有需要释放的东西一定要在onDestroy中加上,即时释放资源是一个程序员良好的习惯。所以建议大家都养成这个习惯。

源码下载:

如果您想第一时间看我的后期文章,公众号每周不定期推送:Android开发666

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java addcallback函数_java中怎么使用callback函数?

UYOU在很多场景,作为开发都会想到,在执行完毕一个任务的时候,能执行一个callback函数是多么好的事情。现在模拟一下这个情景:定义三个类。分别是主函数类。callback函数的接口类。业务处理类。在业务处理类中,处理完业…

oracle 数据抽取 java_oracle数据抽取步骤

oracle数据抽取步骤Database links:1、 在本地计算机上,新建一个连接远程数据库的连接,并记住这个连接的服务名(例如:jzfx_remote);2、 返回远程数据库的GLOBAL_NAME:执行:SELECT * FROM GLOBA…

在java中的交换方法有哪些_java中交换两个变量的值有哪几种方法,交换两个变量a和b的值...

java中交换两个变量的值有哪几种方法在Java中,有哪些方法可以交换两个变量的值,方法:1.定义临时变量2.没有必要定义临时变量3.使用位运算符(学习视频分享:java课程)代码示例:公共类SwapTest {公共静态void main(String…

java修改原有txt文件_(转)Java创建txt文件并进行读、写、修改操作

Creation date: 2007-12-18 - 下午06:48:45 */ public class ReadWriteFile { public static BufferedReader bufread; //指定文件路径和名称 private static String path "D:/suncity.txt"; private static File filename new File(path); private static String …

java暂停另一个线程_如何从另一个线程终止或暂停Rust线程?

对于终止和挂起线程,您可以使用通道 .外部终止在工作循环的每次迭代中,我们检查是否有人通过渠道通知我们 . 如果是,或者如果通道的另一端超出范围,我们就会打破循环 .use std::io::{self, BufRead};use std::sync::mpsc::{self, …

java 7 jboss_JBoss7 入门指南

1、下载地址: http://www.jboss.org/jbossas/downloads ,下载Certified Java EE 6 Full Profile版本。2、解压 jboss-as-7.1.1.Final.zip 到 D:\programs。3、设置环境变量如下:系统变量->新建->变量名:JAVA_HOME C:\Java以…

java实现bloom filter_Java BloomFilter.add方法代码示例

import org.apache.hadoop.util.bloom.BloomFilter; //导入方法依赖的package包/类Overridepublic int run(String[] args) throws Exception {if (args.length ! 4) {System.err.println("Usage: Trainer ");return 1;}// Parse command line argumentsPath inputFi…

java系统项目分为哪五大层次?控制层_业务_一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转...

表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的,DAO层就是将访问数据库的代码,数据库层是数…

opc客户端读取数据品质是bad_听说看了这篇文章就彻底搞懂了什么是OPC(上)

从2000年初以来,我们就一直在使用OPC软件互操作性标准,而那些正准备踏入和想要踏入工业自动化领域的人们却对这些含义感到困惑。所以在本中,我将系统地为你梳理OPC知识。OPC首字母缩写词代表什么?问一个OPC老手,他们或…

java怎么将程序保存在桌面_在Java桌面应用程序中保留数据的最佳方法是什么?...

我的桌面应用程序中有一大堆Java对象,我试图决定将文件作为文件系统的最佳方式.我曾经有过一些想法:>使用DataOutputStream滚动我自己的串行器:这将给我最大的控制文件中的内容,但是以微量管理为代价.>使用ObjectOutputStream及其各种相关类的直接…

JAVA实现inotify一样的功能_WPF实现INotifyPropertyChanged

我已经设置了一个属性并实现了INotifyPropertyChanged像这样......public event PropertyChangedEventHandler PropertyChanged;public FlowProcess LastSelectedFlowProcess{get { return _lastSelectedFlowProcess; }set{_lastSelectedFlowProcess value;Notify("LastS…

php导入json文件_[php]导入超大json文件

前言在之前的文章《做一个twitter的插件玩玩》中,我做了一个批量删除推文(转发推文)的工具,该工具能够删除前3200条推文,但因为总数太多(4.3万条),api接口不支持获取所有的推文,所以我采用了下载的方式,直接…

php 生成dbf,php 读取vfp 8.0,9.0所产生的dbf文件

VFP 9.0 PHP odbc求大神指导。。。由VFP8.0以上制造的DBF文件,自带的Tabel Type> autoinc field 或者Blob field,想通过PHP读取,不行吗?代码很简单如下》$add’c://BatMan//Daten//ladert2.DBF’;$e”Driver{Microsoft Visual …

linux怎样写java代码,linux 怎么写java

linux 怎么写java一、环境安装由于使用 yum 或者 apt-get 命令 安装 openjdk 可能存在类库不全,从而导致用户在安装后运行相关工具时可能报错的问题,所以此处我们推荐采用手动解压安装的方式来安装 JDK。具体步骤如下:1.下载 JDK进入Oracle官…

java登陆密码验证失败,java用户名密码验证示例代码分享

类:NameII 权限:public方法:main 权限:public参数:name,password,denglu,i;参数介绍:name,数据类型 String ,用来存储一个从 input 中获取的值,在本程序当中用作用户名的存放;password,数据类型 String &#xf…

php 五角星,php使用GD库画五角星_PHP教程

01 $width 500;02 $height 500;0304 $im imagecreatetruecolor($width, $height);0506 $red imagecolorallocate($im, 230, 0, 0);07 imagefill($im, 0, 0, $red);0809 $yellow imagecolorallocate($im, 255, 255, 0);1011 //设定画出五角星的五个顶点形成的 正五边形的边…

java的配置文件后缀,Java - 敏感配置文件位置

0x00 前言项目中常遇到Java站点,像SSM、springboot这些框架开发的通常一些配置文件都在固定的位置,当然还有Tomcat容器的配置文件。0x01 记录1.properies配置文件这个文件的作用很重要,通常是一个JavaWeb项目中的配置文件,以.prop…

apmserv 5.2.6 升级php,APMServ5.2.6 升级PHP版本 到高版本 5.3,5.4

Thursday, December 12, 2013 1:59 AM 17173606 php-5.3.28-Win32-VC9-x86.zipranhou 然后解压,得到一个新的目录:把原来APMServ目录中的PHP目录中的:ext , extras 两个目录复制过来,遇到重复文件,不要覆盖…

php原生sql语句删除,PHP 的批量删除sql语句

PHP 的批量删除sql语句发布于 2014-10-07 22:57:44 | 92 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门…

php 正则mac地址,正则表达式匹配MAC地址、邮箱地址、IP地址

(1)匹配MAC地址1)MAC地址由12个16进制的字母组成2)16个字母是 0~9、a~f 。不区分大小写,一般为大写3)每两个字母为一组,共六组,每组间用冒号:隔开匹配思路:00:0C:29:88:83:1A1)先匹配前两个字母;用元字符[] 匹配单个字…