本文实例为大家分享了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实现轮播图无限循环效果