先上效果图:

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);
}
}
};

大致功能就算完成了

最新文章

  1. Jenkins安装与基本配置
  2. SVN冲突解决:当次提交的和上次提交的出现冲突
  3. android图片的异步加载和双缓存学习笔记——DisplayImageOptions (转)
  4. Portal Page的呈現
  5. Java中的HashMap 浅析
  6. vector容器总结.xml
  7. dom 冒泡事件
  8. [Everyday Mathematics]20150126
  9. Codeforces 220B - Little Elephant and Array 离线树状数组
  10. "V租房"搭建微信租房平台,让租房人发起求租需求并接收合适房源回复,提高租房效率 | 36氪
  11. BCGControlBar使用方法(转)
  12. [置顶] Android常用适配器控件
  13. Mysql基础之字符集与乱码
  14. hdu1068 Girls and Boys 二分匹配
  15. JAVA设计模式之---工厂模式
  16. C语言与java语言中数据类型的差别总结
  17. Android 性能优化之减少UI过度绘制
  18. 移动开发常用meta设置
  19. CodeBblock 常用快捷键 (最常用)
  20. 常用脚本lnmp

热门文章

  1. Linux下打包压缩成war包和解压war包
  2. easyui源码翻译1.32--TimeSpinner(时间微调)
  3. money 和 smallmoney
  4. MS dos版本
  5. apache开源项目--Lens
  6. Vimwiki使用笔记
  7. Linux下归档与压缩工具笔记
  8. C#读取设置Cookie
  9. MongoDB 权限 验证
  10. geoserver 安装 sql server 插件