ViewPager轮播图是很常见的功能了,但是项目总是用到,总结下加强记忆.

以下用到的都是再我公司的项目中抽取出来的

1,首先是adapter

这里有两点:

a,getCount()的返回值是Integer.MAX_VALUE;

b,instantiateItem使用到的位置是position % _myList.size();

package com.teekart.app.travel;import im.yixin.sdk.util.BitmapUtil;import java.util.ArrayList;
import java.util.List;import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;import com.lidroid.xutils.BitmapUtils;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.teekart.app.R;
import com.teekart.app.beans.QueryProductsInfo.Msg.ProductMsg;
import com.teekart.app.bookcourse.OpenBigPicActivity;class PicPagerAdapter extends PagerAdapter {private ArrayList<String> _myList;private Context context;private ImageLoader imageLoader;private DisplayImageOptions options;public PicPagerAdapter(Context context ,ArrayList<String> myList) {imageLoader = ImageLoader.getInstance();options = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable.list_placeholder).showImageOnFail(R.drawable.list_placeholder).resetViewBeforeLoading(true).cacheOnDisk(true).imageScaleType(ImageScaleType.IN_SAMPLE_INT).bitmapConfig(Bitmap.Config.RGB_565).considerExifParams(true).displayer(new FadeInBitmapDisplayer(300)).bitmapConfig(Bitmap.Config.RGB_565).imageScaleType(ImageScaleType.IN_SAMPLE_INT).build();_myList = myList;this.context = context;}@Overridepublic int getCount() {
//      return _myList.size();return Integer.MAX_VALUE;}/*** 判断是否可以复用条目*/@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}/*** 销毁条目*/@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}/*** 初始化条目*/@Overridepublic Object instantiateItem(ViewGroup container, int position) {ImageView imageView = new ImageView(context);imageView.setScaleType(ScaleType.CENTER_CROP);imageView.setTag(position);imageView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {int position=(Integer) v.getTag();Intent intent=new Intent(context,OpenBigPicActivity.class);intent.putExtra("position", position);intent.putExtra("urlList", _myList);context.startActivity(intent);}});imageLoader.displayImage(_myList.get(position % _myList.size()), imageView, options);
//      imageLoader.displayImage(_myList.get(position), imageView, options);// 1. 将要显示的界面加到容器中container.addView(imageView);// 2. 返回给控制器, 执行super方法会报错return imageView;}}

2,添加顶部banner图.

/*** 添加顶部的banner图*/private void addTopPic() {topImglist = new ArrayList<String>();topImglist = travelDetailInfo.topGallerys;ArrayList<ImageView> mListData = new ArrayList<ImageView>();ImageView iv;for (int i = 0; i < topImglist.size(); i++) {iv = new ImageView(this);imageLoader.displayImage(topImglist.get(i), iv,options);
//          BitmapUtils bitmapUtil = new BitmapUtils(this);
//          bitmapUtil.display(iv, topImglist.get(i));mListData.add(iv);}vp_travel.setAdapter(new PicPagerAdapter(this, topImglist));tv_page.setText(1+"/"+topImglist.size());vp_travel.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {int previousSelectPosition = position  % topImglist.size();;tv_page.setText(previousSelectPosition+1+"/"+topImglist.size());
//              tv_page.setText(position+1+"/"+topImglist.size());}@Overridepublic void onPageScrollStateChanged(int state) {}@Overridepublic void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {}});vp_travel.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {
//              case MotionEvent.ACTION_DOWN:
//                  System.out.println("ddddddddddddd");
//                  toloop = false;
//                  break;case MotionEvent.ACTION_MOVE:System.out.println("mmmmmmmmmm");toloop = false;break;case MotionEvent.ACTION_UP:System.out.println("uuuuuuuuuuuuuuuuuuuu");toloop = true;break;default:break;}return false;}});}

3,自动切换功能实现并设置当前位置

private void setTopImgGo() {// 自动切换页面功能  new Thread(new Runnable() {  @Override  public void run() {  while (isLoop) {  SystemClock.sleep(3000);  if (toloop) {handler.sendEmptyMessage(0);  }}  }  }).start();  /** * 2147483647 / 2 = 1073741820 - 1  * 设置ViewPager的当前项为一个比较大的数,以便一开始就可以左右循环滑动 */  int n = Integer.MAX_VALUE / 2 % topImglist.size();  int itemPosition = Integer.MAX_VALUE / 2 - n;  vp_travel.setCurrentItem(itemPosition);}

4,最后效果图

ViewPager轮播图自动无限循环滑动,手指按住停止滑动相关推荐

  1. 使用ViewPager实现轮播图自动播放

    使用ViewPager实现轮播图自动播放 通过使用ViewPager实现图片的自动轮播,也可以通过将自动滑动关闭通过手动滑动进行图片的滑动,现在简单分析一下实现的步骤: 1.让图片滑动起来. 2.让图 ...

  2. html 图片轮播渐变,js轮播图自动切换和css做页面自动渐变

    js轮播图自动切换和css页面自动渐变 效果如下: 可以去jq官网学习:http://www.jq22.com/ 部分代码如下: *{margin: 0; padding: 0;} p{text-al ...

  3. 轮播图自动滚动 无缝连接 js

    轮播图自动滚动 无缝连接 <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...

  4. axure轮播图怎么设置循环轮播_Axure教程:轮播图制作步骤详解

    不管是在PC端还是移动端,轮播图是常见的设计元素.下面详细讲解轮播图的制作步骤. 作为Axure初学者,把最近学到的记录下来,和大家一起学习. 如何实现轮播图: 循环展示轮播图片: 将圆点与轮播图一一 ...

  5. js轮播图自动播放和手动控制

    html文件 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF ...

  6. bootstrap轮播图 原点变为方块_JS实现无缝切换轮播图(自动+手动)

    一.背景 说起轮播图,大家应该都不陌生,各大购物网站和面试题里都能看到它的身影. 实现上也并不困难,而写这篇文章是想整理一下自己心血来潮写的代码,以及实现过程中的一些思考,大家也可以顺便复习巩固一下. ...

  7. 【前端学习-16】【day06】WebAPI编程/动画函数封装/回调函数/轮播图/自动播放/节流阀/返回顶部/筋斗云/触屏事件/触屏事件对象/

    新增动画前进后退效果 案例:轮播图 1.显示隐藏功能 2.动态生成小圆圈 3.排他思想 4.开始滚动 5.右侧按钮 6.克隆第一张图片 7.小圆圈跟着右侧按钮变化 8.序号和点击的要统一 9.左侧代码 ...

  8. html菜鸟教程轮播图自动播放,如何实现轮播图?

    1.背景介绍 轮播图,是由网页banner进化而来,通常放在屏幕最显眼的位置,以大图显示.随着互联网的发展,网页中需要推广的信息越来越多,宣传信息都欲占据黄金位置,最后相互妥协,轮播图应运而生.总而言 ...

  9. JS实现轮播图(自动+手动)

    网页轮播图效果: 核心原理: tips:代码在文章末尾 这个ul就是我们这四张图片的父盒子,我们通过对这个父盒子添加动画函数来实现移动,然后给父盒子来一个溢出隐藏就达到了轮播的效果 动画函数如下: f ...

  10. JQuery实现圆点轮播图自动播放

    用jquery实现轮播图 实现之后的效果 实现思路 1,每次只显示一张图片其他的图片隐藏起来 2,每一次轮播 相应位置的小圆点跟着变色 3,鼠标移入小圆点时显示相应的图片 源代码 <!DOCTY ...

最新文章

  1. java培训学习阶段步骤讲解
  2. 5GtoB即将迎来规模商用,如何共创行业新价值?
  3. Vue组件间通信:一个例子学会Vue组件-Vue.js学习总结)(转载)
  4. HTTP/2 协议入门
  5. @loadbalanced在哪个包里面_ABB机器人-选项包
  6. 信息学奥赛一本通(2039:【例5.6】冒泡排序)
  7. PHP中H5棋牌开发的异常处理
  8. 没有BUGヾ( ̄▽ ̄)
  9. 马云选择了西雅图模式,你家公司选硅谷还是西雅图?
  10. 手机端上传图片出现“没有应用可执行操作”
  11. php validate,jQuery Validate | 菜鸟教程
  12. Unity -- 用EasyAR制作出AR红包
  13. 国产国脑与腾讯会议配合挺默契
  14. 经过本人盘点与细数,总结出个人云存储与传统网盘五大差别
  15. 博士生成长需要经历的7道门
  16. 使用gcc编译报错:/tmp/ccoLTk4o.o:在函数‘main’中: main1.c:(.text+0x9c):对‘pirnt1’未定义的引用 collect2: 错误:ld 返回 1
  17. PHP empty() 函数
  18. 详解WPF 4 DataGrid控件的基本功能
  19. 意出望外的一次相遇|利楚初探 OceanBase
  20. 回转盘零件的机械加工工艺规程及镗孔夹具设计(说明书+CAD图纸+实习日记+外文翻译+工序卡 过程卡)

热门文章

  1. Mysql读写分离的四种方案
  2. unity拖拽drag_【UGUI】UGUI的Drag拖拽与游戏物体的Drop进行交互
  3. AI率先引领手机“视”界革命——旷视联合IDC最新出炉AI+手机行业白皮书!
  4. python scrapy 爬取steam游戏
  5. 大一c语言餐馆叫号系统,专业体检中心排队叫号系统厂家
  6. HTML中如何将背景图片移动,怎么设置html的背景图片的位置
  7. 辅修计算机科学与技术有哪些课程,计算机科学与技术专业辅修课程表.doc
  8. java计算机毕业设计飞机航班信息查询系统演示视频2021MyBatis+系统+LW文档+源码+调试部署
  9. Twaver-HTML5基础学习(3)基本数据元素(Data)其他功能函数以及组Group
  10. dm9000网卡 S3C2440