先上效果图:

viewpager是google在v4-support包中提供的,使用时与listview类似,度需要提供一个adapter,

只不过viewpager提供的是PagerAdapter

查看文档,当我们要实现一个pageradapter的时候,至少要实现下面4个方法

例如:

class MyAdvertAdapter extends PagerAdapter{

        /**
* 返回条目的数量
* @return
*/
@Override
public int getCount() {
return Integer.MAX_VALUE;
} @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
} /**
* 创建一页的数据
*
* @param container
* @param position
* @return
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
position = position % picArray.length;
ImageView imageView = new ImageView(AdvertScrollActivity.this);
imageView.setImageResource(picArray[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
container.addView(imageView,params);
return imageView;
} /**
* 销毁某一页的数据
* @param container
* @param position
* @param object
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView)object);
object = null;
}
}

当pagerAdapter实现好后,就可以调用viewpager.setAdapter(pagerAdapter),此时就可以实现当手指滑动显示图片的效果

接下来就是添加图片描述的信息,还有用一些小点描述当前显示的是第几张图片

ViewPager有一个onPageChangeListener事件,当图片改变的时候会回调里面的一些方法

vp_advert.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } /**
* 显示某张图片的时候回调改方法
* @param position
*/
@Override
public void onPageSelected(int position) {
position = position % picArray.length; Log.i(TAG,"onPageSelected...("+position+")"); /**
* 设置图片的描述信息
*/
tv_desc.setText(picDescArray[position]);
/**
* 设置小点的显示
*/
ll_point_container.getChildAt(lastPosition).setEnabled(false);
ll_point_container.getChildAt(position).setEnabled(true);
lastPosition = position;
} @Override
public void onPageScrollStateChanged(int state) { }
});

最后就是如何让图片自动轮询

可以使用线程,在线程里sleep,也可是使用timer定时器。

但是在这边我们使用的是handler的延迟发送消息

 Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
vp_advert.setCurrentItem(vp_advert.getCurrentItem() + 1);
if (isRunning) {
handler.sendEmptyMessageDelayed(0x123,LOOP_TIME);
}
}
};

大致功能就算完成了

使用viewpager实现广告条轮询的效果的更多相关文章

  1. ViewPager的广告条轮播

    首先布局 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:androi ...

  2. Android中使用ViewPager实现广告条

    我们在使用电商或视频的手机客户端时,通常会看到广告条的效果.在网上搜索时才知道使用的是ViewPager,于是自己也做了一个Demo. 以下是效果图: 图中包括背景图片.文字描述以及白点. 其中Vie ...

  3. android项目实战 --ListView 头部ViewPager广告轮询图效果

    看开源框架:https://github.com/tianshaojie/AndroidFine,里面有如下效果,特记录学习下,以后项目中用也好能够立刻想起来.   如上面所示,是常见项目中的图片轮训 ...

  4. 使用ViewPager实现广告自动轮播的效果

    package com.loaderman.viewpgerlunbodemo; import android.os.Bundle; import android.os.Handler; import ...

  5. Ajax轮询以及Comet模式—写在Servlet 3.0发布之前(转)

    2008 年的夏天,偶然在网上闲逛的时候发现了 Comet 技术,人云亦云间,姑且认为它是由 Dojo 的 Alex Russell 在 2006 年提出.在阅读了大量的资料后,萌发出写篇 blog ...

  6. 长连接、短连接、长轮询和WebSocket

    //转发,格式待整理 2017-08-0519784View0 对这四个概念不太清楚,今天专门搜索了解一下,总结一下: 长连接:在HTTP 1.1,客户端发出请求,服务端接收请求,双方建立连接,在服务 ...

  7. 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  8. nginx代理 upstream轮询

    问题描述 我有2个Tomcat  一个端口开启(8021),一个端口未开启(8022),在nginx里用upstream模块进行代理 ,代理的负载算法采用的是默认的轮询算法,配置成功后,访问页面时并没 ...

  9. linux实现DNS轮询实现负载平衡

    DNS 轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的 DNS 服务器 Cache 的影响:windows 客户端也有一个DNS Cache.这些都会影响 DNS 轮询的效果.因此 ...

随机推荐

  1. minicom installation and configuration on ubuntu

    minicom是一个串口通信工具,就像Windows下的超级终端,可用来与串口设备通信.minicom完全通过键盘实现操作. install sudo apt-get install minicom ...

  2. CSS margin 属性

    设置外边距的最简单的方法就是使用 margin 属性. margin 属性接受任何长度单位,可以是像素.英寸.毫米或 em. margin 可以设置为 auto.更常见的做法是为外边距设置长度值.下面 ...

  3. Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS

    http://blog.csdn.net/hice1226/article/details/6717354 Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS 摘要:Mpeg-2同步及时间 ...

  4. 用APP赚钱(转)

    英文原文:MAKING MONEY ON APPS 做为半个 iOS 开发的一家公司,我时不时地考虑如何用 APP 赚钱.最近由Brent Simmons 和 Jared Sinclair 的文章挑起 ...

  5. Ember.js demo5

    <!DOCTYPE html> <html> <head> <meta name="description" content=" ...

  6. Bex64

    http://speedupcomputercleaner.com/windows-7-error-bex64.php   How To Fix Windows 7 Error Bex64 ? Wha ...

  7. spring的事件机制

    事件机制作为一种编程机制,在许多语言中都提供了支持.JAVA语言也不例外,java中的事件机制的参与者有3种角色: 1.event object 2.event source 3.event list ...

  8. ☀【jQuery 优化】jQuery基础教程(第3版)

    jQuery代码优化:选择符篇 √ http://www.ituring.com.cn/article/377 jQuery代码优化:遍历篇 √ http://www.ituring.com.cn/a ...

  9. C# winform自定义Label控件使其能设置行距

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  10. c#中字符串截取使用的方法

    AndyZhang welcome to java world c#中字符串截取使用的方法 String substring(int beginIndex) String substring(int ...