栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

1、具体步骤

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

       效果图:

1.1 布局,直接viewpager+一个viewgroup就好。

 
   
     
       
       
   
 

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

 
 
   
   
 

   选中为红点: point_select.xml

 
 
   
   
 

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

  
  private void initData() { 
    mContext = this; 
    int[] i = new int[] { R.drawable.bg_lunbo1, R.drawable.bg_lunbo2, R.drawable.bg_lunbo3, R.drawable.bg_lunbo4 }; 
    al = new ArrayList(); 
    for (int x = 0; x < i.length; x++) { 
      ImageView iv = new ImageView(mContext); 
      iv.setBackgroundResource(i[x]); 
      al.add(iv); 
      View v=new View(mContext); 
      v.setBackgroundResource(R.drawable.point_normal); 
      //有多少张图就放置几个点 
      LayoutParams layoutParams = new LinearLayout.LayoutParams(15, 15);  
     layoutParams.leftMargin = 30;  
      ll_container.addView(v,layoutParams); 
    } 
    vp_pager.setAdapter(new Myadapter()); 
    vp_pager.setonPageChangeListener(this); 
    vp_pager.setCurrentItem(al.size()*1000); //这个是无线轮询的关键 
    ll_container.getChildAt(0).setBackgroundResource(R.drawable.point_select); 
    prePosition=0; 
  } 

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

class Myadapter extends PagerAdapter { 
    @Override 
    public int getCount() { 
      return Integer.MAX_VALUE; // 要无限轮播 
    } 
    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
      return arg0 == arg1; 
    } 
    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
 int position1=position % al.size();    
 ImageView imageView = al.get(position1); 
 container.addView(imageView); 
 return imageView; 
    } 
    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
      container.removeView((View)object); 
    } 
  } 

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

vp_pager.setonPageChangeListener(this); 

@Override 
public void onPageScrollStateChanged(int arg0) { 
} 
@Override 
public void onPageScrolled(int arg0, float arg1, int arg2) { 
} 
@Override 
public void onPageSelected(int position) { 
   int newPosition = position % al.size();  
   ll_container.getChildAt(newPosition).setBackgroundResource(R.drawable.point_select); 
   ll_container.getChildAt(prePosition).setBackgroundResource(R.drawable.point_normal); 
   prePosition=newPosition; 
} 

1.6实现自动轮询。开启一个线程即可。

 
  private void pollint() { 
   pThread = new PollThread(); 
   pThread.start(); 
  } 
class PollThread extends Thread{ 
    @Override 
    public void run() { 
      while (poll){   
  try { 
   Thread.sleep(2000); 
 } catch (InterruptedException e) { 
   e.printStackTrace(); 
 } 

runonUiThread(new Runnable() {@Overridepublic void run() {vp_pager.setCurrentItem(vp_pager.getCurrentItem()+1);}});}}}这样就搞定了,仅仅提供一个思路。自己可以扩展,例如重写viewpager,把功能封装在内部即可。

总结

以上所述是小编给大家介绍的Android使用viewpager实现自动无限轮播图,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/156012.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号