ViewPager循环滚动

一.先写个适配器

 1 public class MyPagerAdapter extends PagerAdapter {
 2     /**
 3      * 上下文
 4      */
 5     private Context context;
 6     /**
 7      * 传入的数据
 8      */
 9     private String[] datas;
10 
11     public MyPagerAdapter(Context context, String[] datas) {
12         this.context = context;
13         this.datas = datas;
14     }
15 
16     @Override
17     public int getCount() {
18         //此处返回最大数
19         return Integer.MAX_VALUE;
20     }
21 
22     @Override
23     public boolean isViewFromObject(View view, Object object) {
24         return view == object;
25     }
26 
27     @Override
28     public Object instantiateItem(ViewGroup container, int position) {
29         //position会随着时间不断的增大 所以这里取position与上datas.length的模
30         int i = position % datas.length;
31         //SmartImageView是github上的一个开源图片加载框架
32         SmartImageView smartImageView = new SmartImageView(context);
33         smartImageView.setScaleType(ImageView.ScaleType.FIT_XY);
34         smartImageView.setImageUrl(datas[i], null);
35         container.addView(smartImageView);
36 
37         return smartImageView;
38     }
39 
40     @Override
41     public void destroyItem(ViewGroup container, int position, Object object) {
42         container.removeView((View) object);
43     }
44 }

依赖开源框架 

 compile 'com.github.snowdream.android:smartimageview:0.0.2'

接下来是activity中的代码了

1 private ViewPager viewPager;
2 private MyPagerAdapter pagerAdapter;
3 private Handler handler = new Handler();
 1 /**
 2      * view pager轮播任务类
 3      */
 4     class BannerTask implements Runnable {
 5         public void start() {
 6             //postDelayed方法的第一个参数就是实现一个Runnable
 7             //因为当前类已经实现了Runnable接口所以这里传入this,每隔5秒跟新一次
 8             handler.postDelayed(this, 5000);
 9         }
10 
11         @Override
12         public void run() {
13             //获取当前item
14             int currentItem = viewPager.getCurrentItem();
15             //当前item加一,展示下一个item
16             currentItem++;
17             viewPager.setCurrentItem(currentItem);
18             handler.postDelayed(this, 5000);
19         }
20     }
1 //设置适配器
2 viewPager.setAdapter(pagerAdapter);
3 //创建轮播任务对象
4 BannerTask task = new BannerTask();
5 //开始轮播
6 task.start();

不懂的地方请留言

posted on 2017-09-01 21:04  何叫兽  阅读(186)  评论(0编辑  收藏  举报