Android使用:viewpage实现自动无限轮播图

  

  

,,,,说下大概实现步骤,一般我们有两种,一种是:viewpage +作为游标的点。另外一种是重写:viewpage。

  

,,,,,,效果图:

  

 Android使用:viewpage实现自动无限轮播图

  

1.1布的局,直接:viewpage +一个viewgroup就好。

        & lt; RelativeLayout xmlns: android=" http://schemas.android.com/apk/res/android "   xmlns:工具=" http://schemas.android.com/tools "   android: layout_width=" match_parent "   android: layout_height=" match_parent "   工具:上下文=" com.maxence.viewpager。祝辞MainActivity”;   & lt;使用   android: layout_width=" match_parent "   android: layout_height=?20 dp”比;   & lt; android.support.v4.view.ViewPager   android: id=癅 + id/vp_pager”   android: layout_width=" match_parent "   android: layout_height=" match_parent "/比;   & lt; !——作为viewgroup动态加游标——比;   LinearLayout & lt;   android: id=癅 + id/ll_container”   android: layout_width=" match_parent "   android: layout_height=" 30 dp "   android:重力="中心"   面向android:="水平"   android: layout_alignParentBottom=" true "   祝辞& lt;/LinearLayout>   & lt;/RelativeLayout>   & lt;/RelativeLayout>之前      

, 1.2动态添加的点,常规白点:point_normal.xml。

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;形状xmlns: android=" http://schemas.android.com/apk/res/android "   android:形状=巴衷病北?   & lt;中风   android:宽度=?下降”   android:颜色=" # ffffff "/比;   & lt;固体android:颜色=" # ffffff "/比;   & lt;/shape>之前      

,,选中为红点:point_select.xml

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;形状xmlns: android=" http://schemas.android.com/apk/res/android "   android:形状=巴衷病北?   & lt;中风   android:宽度=" 1 dp "   android:颜色=" # ff0000 "/比;   & lt;固体android:颜色=" # ff0000 "/比;   & lt;/shape>之前      

1.3动态添加进去图片和游标点。

     /* *   * 初始化数据   */私人空间initData () {   mContext=;   int[]我=new int [] {R.drawable。bg_lunbo1 R.drawable。bg_lunbo2 R.drawable。bg_lunbo3 R.drawable。bg_lunbo4};   艾尔=new ArrayList ();   for (int x=0;x & lt;i.length;x + +) {   第四ImageView=new ImageView (mContext);   iv.setBackgroundResource(我[x]);   al.add (iv);   视图v=新视图(mContext);   v.setBackgroundResource (R.drawable.point_normal);//有多少张图就放置几个点   LayoutParams LayoutParams=新LinearLayout。LayoutParams (15、15);   layoutParams。leftMargin=30;   ll_container.addView (v, layoutParams);   }   vp_pager。setAdapter(新Myadapter ());   vp_pager.setOnPageChangeListener(这个);   vp_pager.setCurrentItem (al.size () * 1000);//这个是无线轮询的关键   ll_container.getChildAt (0) .setBackgroundResource (R.drawable.point_select);   介词=0;   }      

1.4 viewpgaer绑定PagerAdapter,这样就能滑动照片并且无限滑了。

        类Myadapter延伸PagerAdapter {   @Override   公共int getCount () {   返回Integer.MAX_VALUE;//要无限轮播   }   @Override   公共布尔isViewFromObject(视图arg0,对象__arg1) {   返回arg0==__arg1;   }   @Override   公共对象instantiateItem (ViewGroup容器,int位置){   int position1=位置% al.size ();   ImageView ImageView=al.get (position1);   container.addView (imageView);   返回imageView;   }   @Override   公共空间destroyItem (ViewGroup容器,int位置、对象对象){   container.removeView((视图)对象);   }   }      

1.5实现游标,就是滑动图片、下面的红点也跟着变化。

        vp_pager.setOnPageChangeListener(这个);      @Override   公共空间>/* *   *自动轮询   */私人空间pollint () {   pThread=new PollThread ();   pThread.start ();   }   类PollThread扩展线程{   @Override   公共空间run () {   而(调查){   尝试{   thread . sleep (2000);   }捕捉(InterruptedException e) {   e.printStackTrace ();   }      

<代码> runOnUiThread(新Runnable () {@Overridepublic无效运行(){vp_pager.setCurrentItem (vp_pager.getCurrentItem() + 1);}});}}}

Android使用:viewpage实现自动无限轮播图