先上效果图:

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. easyui源码翻译1.32--accordion(手风琴)

    前言 前几天加班比较忙 未能及时更新翻译的 今天多发布几篇..下载该插件翻译源码 Accordion 分类空间允许用户使用多面板,但在同一时间只会显示一个.每个面板都内建支持展开和折叠功能.点击一个面 ...

  2. H2O与Java线程同步

    Java 5以前的线程同步采用syncronized和wait,notify,notifyAll来实现,比较粗糙.之后有了Lock和Condition.ReentrantLock的简单lock,unl ...

  3. Axure RP Pro 6.5修改站点地图,只显示需要的节点

    1. 原始页面   2. 原始代码(用记事本打开生成原型所在文件夹下的data\sitemap.js) var sitemap = (function() { var _ = function() { ...

  4. 坑爹的UICollectionView

    最近用UICoolectionView的时候遇到一个很DT的问题,我往VC里加12个视图,结果显示成这样(右边是期待的样子):       研究了一下午,终于发现了问题: @interface FpL ...

  5. C#中如何生成矢量图

    主要的功能就是使用C#画矢量图,然后导出到Word.Excel.Powerpoint中,并且能够再次被编辑.以下是解决过程: 首先应该确定在Office文档中可编辑图形使用的格式:学习了相关资料,了解 ...

  6. shutdown,init,halt,poweroff,reboot的区别和联系, pkill -kill -t tty7注销

    前言 最近这些天,每天晚上关机前,都会在osc上发一条动弹,“我要init 0了,各位晚安啊”,这是一件再正常不过的事情了. 看似很平常的一件事情,不过在昨晚就被一位同学的回复给难住了,到底是什么样的 ...

  7. VJP1100 加分二叉树(树形DP)

    链接 归属树形DP  做着更像记忆化 DP很好做 就是那个输出路径恶心了..改代码 从60多行改到120多行..dp从1维加到三维.. 先类似记忆化搜索整棵树 枚举以i为根节点的最大值 子树类似 求完 ...

  8. bzoj3503

    显然知道第一行就可以只道整个矩阵但n<=40,搜索是不行的,我们设第一行为x1~xm可以由轻易由第一行未知数推出第n+1行,这一步我们可以压成二进制位(因为只和奇偶有关)显然n+1行必须是0,由 ...

  9. 【转】Optiplex 7010驱动下载链接(XP&Windows7

    原文网址:http://zh.community.dell.com/support_forums/desktops/f/236/t/2606 x 7010驱动下载链接(XP&Windows7) ...

  10. NOIP2000 进制转换

    题一   进制转换              (18分)  问题描述      我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之 ...