Android实现轮播图无限循环效果

  

本文实例为大家分享了Android轮播图无限循环的具体代码,供大家参考,具体内容如下

  

<>强实现无限循环

  

在getCount()方法中,返回一个很大的值,Integer.MAX_VALUE

  

在instantiateItem()方法中,获取当前视图的索引时,进行取于操作,传递进来的int位置是个非常大的数,对他进行求余数

  

在destroyItem()方法中,同样

  

在onPageSelected()监听方法中,对传递进来的索引进行取于,

  

<强>反向的无限循环

  

调用:viewpage对象的setCurrentItem()方法,设置第一次进来时候的当前页,参数:int数字,我们把它定位到Integer.MAX_VALUE的中间,并且保证第一条是当前位置,Integer.MAX_VALUE/2 - ((Integer.MAX_VALUE/2) % banners.size ()),

  

目前有个左划空白页的问题没解决

        包com.tsh.myviewpager;      进口java.util.ArrayList;   进口并不知道;      进口android.app.Activity;   进口android.os.Bundle;   进口android.support.v4.view.PagerAdapter;   进口android.support.v4.view.ViewPager;   进口android.support.v4.view.ViewPager.OnPageChangeListener;   进口android.view.View;   进口android.view.ViewGroup;   进口android.widget.ImageView;   进口android.widget.LinearLayout;   进口android.widget.TextView;      公开课MainActivity延伸活动{   私人:viewpage vp_banner;   私人LinearLayout ll_points;   私人TextView tv_title;   私人List横幅;   私人String[]标题=new String [] {   “新闻标题1”,   “新闻标题2”,   “新闻标题3”   };   私人List点=new ArrayList ();   @Override   保护无效onCreate(包savedInstanceState) {   super.onCreate (savedInstanceState);   setContentView (R.layout.activity_main);//初始化   vp_banner=(: viewpage) findViewById (R.id.vp_banner);   ll_points=(LinearLayout) findViewById (R.id.ll_points);   tv_title=(TextView) findViewById (R.id.tv_title);//横幅部分   ,横幅=new ArrayList<的在();   ImageView img1=new ImageView(这个);   img1.setImageResource (R.drawable.a);   banners.add (img1);   ImageView img2=new ImageView(这个);   img2.setImageResource (R.drawable.b);   banners.add (img2);   ImageView img3=new ImageView(这个);   img3.setImageResource (R.drawable.c);   banners.add (img3);//小图标   ll_points=(LinearLayout) findViewById (R.id.ll_points);   for (int i=0; i< banners.size();我+ +){   ImageView图像=new ImageView(这个);   image.setImageResource (R.drawable.point_selector);   LinearLayout。LayoutParams params=新LinearLayout。LayoutParams (5,5);   params.rightMargin=4;   image.setLayoutParams (params);      如果(i==0) {   image.setEnabled(真正的);   其他}{   image.setEnabled(假);   }   points.add(图片);   ll_points.addView(图片);   }//设置适配器   vp_banner。setAdapter(新MyPagerAdapter ());   vp_banner.setCurrentItem (Integer.MAX_VALUE/2 - ((Integer.MAX_VALUE/2) % banners.size ()));   vp_banner。setOnPageChangeListener(新OnPageChangeListener () {   @Override   公共空间onPageSelected (int arg0) {   tv_title.setText(标题[arg0%banners.size ()));//小图标处理   (ImageView点:点){   point.setEnabled(假);   }   points.get (arg0%banners.size ()) .setEnabled(真正的);   }      @Override   公共空onPageScrolled (int arg0,浮动__arg1、int最长){//TODO自动生成方法存根      }      @Override   公共空间onPageScrollStateChanged (int arg0) {//TODO自动生成方法存根      }   });      }      私有类MyPagerAdapter延伸PagerAdapter {   @Override   公共空间destroyItem (ViewGroup容器,int位置、对象对象){   System.out.println(“销毁:“+位置);   container.removeView((视图)对象);   对象=零;   }      @Override   公共对象instantiateItem (ViewGroup容器,int位置){   System.out.println(“初始化:“+位置);   位置=位置% banners.size ();//解决右划出的错   如果(banners.get(位置).getParent () !=null) {//container.removeView (banners.get(位置));   其他}{   container.addView (banners.get(位置));   }      返回banners.get(位置);   }      @Override   公共int getCount () {   返回Integer.MAX_VALUE;   }      @Override   公共布尔isViewFromObject(视图arg0,对象__arg1) {   返回arg0==__arg1;   }   }   }      之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Android实现轮播图无限循环效果